引入两jar包:
jcommon-1.0.16.jar
jfreechart-1.0.13.jar
直接上代码:
package com.potevio.rnd.tobacco.mine; import java.awt.Font; import java.awt.RenderingHints; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.jfree.chart.ChartFactory; import org.jfree.chart.JFreeChart; import org.jfree.chart.StandardChartTheme; import org.jfree.data.time.TimeSeriesCollection; /** * @description 构造数据,测试图片生成 * @author Zhou-Jingxian */ public class Main { public static void main(String[] args) { TimeSeriesChartUtil util = new TimeSeriesChartUtil("month", "服务端失败率变化曲线图", "2013-4-21至2013-4-27", "时间", "失败率"); List<Bean> datalist = new ArrayList<Bean>(); Bean bean1 = new Bean(); bean1.setGoods_name("中华"); Map<String,Double> priceindexMap1 = new HashMap<String,Double>(); priceindexMap1.put("2013-04-21", 0.23); priceindexMap1.put("2013-04-22", 0.24); priceindexMap1.put("2013-04-23", 0.23); priceindexMap1.put("2013-04-24", 0.22); priceindexMap1.put("2013-04-25", 0.23); priceindexMap1.put("2013-04-26", 0.24); priceindexMap1.put("2013-04-27", 0.23); bean1.setPriceindexMap(priceindexMap1); datalist.add(bean1); // Bean bean2 = new Bean(); // bean2.setGoods_name("芙蓉王"); // Map<String,Double> priceindexMap2 = new HashMap<String,Double>(); // priceindexMap2.put("200903", 100.12); // priceindexMap2.put("200904", 100.2); // priceindexMap2.put("200905", 100.0); // priceindexMap2.put("200906", 100.08); // priceindexMap2.put("200907", 100.12); // priceindexMap2.put("200908", 100.2); // priceindexMap2.put("200909", 100.0); // priceindexMap2.put("200910", 100.08); // bean2.setPriceindexMap(priceindexMap2); // datalist.add(bean2); // // Bean bean3 = new Bean(); // bean3.setGoods_name("云烟"); // Map<String,Double> priceindexMap3 = new HashMap<String,Double>(); // priceindexMap3.put("200903", 99.77); // priceindexMap3.put("200904", 99.7); // priceindexMap3.put("200905", 99.83); // priceindexMap3.put("200906", 99.93); // priceindexMap3.put("200907", 99.77); // priceindexMap3.put("200908", 99.7); // priceindexMap3.put("200909", 99.83); // priceindexMap3.put("200910", 99.93); // bean3.setPriceindexMap(priceindexMap3); // datalist.add(bean3); //步骤1:创建XYDataset对象(准备数据) TimeSeriesCollection dataset = util.createDataset(datalist); //步骤2:根据Dataset 生成JFreeChart对象,以及做相应的设置 JFreeChart freeChart = util.createChart(dataset); //步骤3:将JFreeChart对象输出到文件,Servlet输出流等 util.saveAsFile(freeChart, "D:\\test\\chenwenbiao_qx.png"); } }
package com.potevio.rnd.tobacco.mine; import java.awt.Color; import java.awt.Font; import java.awt.GradientPaint; import java.awt.RenderingHints; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.StandardChartTheme; import org.jfree.chart.labels.ItemLabelAnchor; import org.jfree.chart.labels.ItemLabelPosition; import org.jfree.chart.labels.StandardXYItemLabelGenerator; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.xy.XYItemRenderer; import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; import org.jfree.chart.title.TextTitle; import org.jfree.data.time.Day; import org.jfree.data.time.TimeSeries; import org.jfree.data.time.TimeSeriesCollection; import org.jfree.ui.RectangleInsets; import org.jfree.ui.TextAnchor; /** * @description 使用JFreeChart组建,生成一个价格随日期的走势图表 * @author Zhou-Jingxian */ public class TimeSeriesChartUtil { private String type;// month,year private int width;// 后台计算 private int height;// 后台计算 private String title;// 图表的主标题 private String subTitle;// 图表的子标题 private String xName;// 可默认值:月份 private String yName;// 可默认值:价格指数 /*************************************************************************** * constructor function * * @param type * @param title * @param subTitle * @param xName * @param yName */ public TimeSeriesChartUtil(String type, String title, String subTitle, String xName, String yName) { this.type = type; this.title = title; this.subTitle = subTitle; this.xName = xName; this.yName = yName; if ("month".equals(type)) { this.width = 800; this.height = 600; } else if ("year".equals(type)) { this.width = 600; this.height = 400; } } /** 根据TimeSeriesCollection创建JFreeChart对象 */ public JFreeChart createChart(TimeSeriesCollection dataset) { //设置主题解决乱码 StandardChartTheme theme = new StandardChartTheme("unicode") { public void apply(JFreeChart chart) { chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); super.apply(chart); } }; theme.setExtraLargeFont(new Font("宋体", Font.PLAIN, 20)); theme.setLargeFont(new Font("宋体", Font.PLAIN, 14)); theme.setRegularFont(new Font("宋体", Font.PLAIN, 12)); theme.setSmallFont(new Font("宋体", Font.PLAIN, 10)); ChartFactory.setChartTheme(theme); JFreeChart chart = ChartFactory.createTimeSeriesChart(this.title, this.xName, this.yName, dataset, true, true, true); XYPlot plot = (XYPlot) chart.getPlot(); XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer) plot .getRenderer(); // 设置网格背景颜色 plot.setBackgroundPaint(Color.white); // 设置网格竖线颜色 plot.setDomainGridlinePaint(Color.pink); // 设置网格横线颜色 plot.setRangeGridlinePaint(Color.pink); // 设置曲线图与xy轴的距离 plot.setAxisOffset(new RectangleInsets(0D, 0D, 0D, 10D)); // 设置曲线是否显示数据点 xylineandshaperenderer.setBaseShapesVisible(true); // 设置曲线显示各数据点的值 XYItemRenderer xyitem = plot.getRenderer(); xyitem.setBaseItemLabelsVisible(true); xyitem.setBasePositiveItemLabelPosition(new ItemLabelPosition( ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT)); xyitem.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator()); xyitem.setBaseItemLabelFont(new Font("Dialog", 1, 14)); plot.setRenderer(xyitem); // 设置子标题 TextTitle subtitle = new TextTitle(this.subTitle, new Font("黑体",Font.BOLD, 12)); chart.addSubtitle(subtitle); // 设置主标题 chart.setTitle(new TextTitle(this.title,new Font("隶书", Font.ITALIC, 15))); // 设置背景颜色 chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 0, 1000,Color.blue)); chart.setAntiAlias(true); return chart; } /** 创建TimeSeriesCollection对象 */ public TimeSeriesCollection createDataset(List<Bean> datalist) { // 时间曲线数据集合 TimeSeriesCollection lineDataset = new TimeSeriesCollection(); for (int i = 0; i < datalist.size(); i++) { Bean bean = datalist.get(i); TimeSeries series = new TimeSeries(bean.getGoods_name(), Day.class); Map<String, Double> pimap = bean.getPriceindexMap(); Set piset = pimap.entrySet(); Iterator piIterator = piset.iterator(); while (piIterator.hasNext()) { Map.Entry<String, Double> hiddenMapEntry = (Map.Entry<String, Double>) piIterator .next(); String key = hiddenMapEntry.getKey(); int year = Integer.parseInt(key.substring(0, 4)); int month = Integer.parseInt(key.substring(5, 7)); int day = Integer.parseInt(key.substring(8,10)); System.out.println("year:" + year + "\tmonth:" + month + "\tday:" + day); series.add(new Day(day , month , year), hiddenMapEntry.getValue()); } lineDataset.addSeries(series); } return lineDataset; } /** 保存为文件 */ public void saveAsFile(JFreeChart chart, String outputPath) { FileOutputStream out = null; try { File outFile = new File(outputPath); if (!outFile.getParentFile().exists()) { outFile.getParentFile().mkdirs(); } out = new FileOutputStream(outputPath); // 保存为PNG ChartUtilities.writeChartAsPNG(out, chart, width, height); // 保存为JPEG // ChartUtilities.writeChartAsJPEG(out, chart, width, height); out.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (out != null) { try { out.close(); } catch (IOException e) { // do nothing } } } } public int getWidth() { return width; } public void setWidth(int width) { this.width = width; } public int getHeight() { return height; } public void setHeight(int height) { this.height = height; } public String getXName() { return xName; } public void setXName(String name) { xName = name; } public String getYName() { return yName; } public void setYName(String name) { yName = name; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getSubTitle() { return subTitle; } public void setSubTitle(String subTitle) { this.subTitle = subTitle; } }
package com.potevio.rnd.tobacco.mine; import java.util.Map; /** * @description 数据BEAN * @author Zhou-Jingxian */ public class Bean { private String goods_name ; private Map<String,Double> priceindexMap; public String getGoods_name() { return goods_name; } public void setGoods_name(String goods_name) { this.goods_name = goods_name; } public Map<String, Double> getPriceindexMap() { return priceindexMap; } public void setPriceindexMap(Map<String, Double> priceindexMap) { this.priceindexMap = priceindexMap; } }
改自:java报表折线图
出现如下错误:
Exception in thread "main" java.lang.NoSuchMethodError: org.jfree.ui.RectangleInsets.<init>(DDDD)V
原因:
jdk的版本太低了,jfreechart必须在1.0.13以上,jdk必须在1.4.0.b8以上
jcommon.jar 换成 jcommon-1.0.16.jar后在jdk1.4.0.6上跑也ok
jfreechart_1.0.13.jar
相关推荐
这个"java折线图绘制程序"是专为这个目的设计的,它允许开发者和用户轻松地创建和显示折线图,以便更好地理解和解释数据。 Java语言提供了多种库来支持图形绘制,其中最常用的是Java AWT(Abstract Window Toolkit...
Java JFreeChart库是用于创建高质量图表的开源项目,它为Java开发者提供了丰富的图形类型,如折线图、饼图和柱状图等。在Java后台生成这些图表,可以用于数据可视化,帮助用户更好地理解存储在数据库或其他数据源中...
资源描述:一个使用java做的导出数据,并且可以在excel表生成折线图的工具类,使用简单操作方便。
通过JFreeChart插件,既可以生成普通效果的折线图,也可以生成3D效果的折线图。如果想生成普通效果的折线图,需要通过工厂类ChartFactory的createLineChart()方法获得JFreeChart类的实例;如果想生成3D效果的折线图...
这个库支持多种图表类型,包括柱状图、饼图和折线图,适用于数据分析、报告生成以及可视化展示等多种场景。在Java开发中,JFreeChart提供了一个简单易用的API,使得开发者可以轻松地将复杂的统计或业务数据转化为...
在Java编程语言中,生成数据可视化图形,如饼状图、柱状图和折线图,是数据分析和展示的关键步骤。这些图表可以帮助我们直观地理解数据分布和趋势。本篇文章将详细探讨如何使用Java实现这三种图表。 首先,饼状图...
在本教程中,我们将探讨如何使用Java和ECharts来实现从MySQL数据库中获取历史数据并在前端展示为折线图。ECharts是一款由百度开源的、基于JavaScript的数据可视化库,能够生成丰富的图表类型,包括折线图。而Java...
在这个场景中,我们将探讨如何使用Java和Highcharts这两个工具来实现一个动态的、交互式的折线图。Highcharts是一个流行的JavaScript库,专门用于创建高质量的图表,而Java则作为后端语言,负责处理数据并将其传递给...
java JXL导出Excel源码及jfreechart 生成折线图,饼图 java JXL导出Excel源码及jfreechart 生成折线图,饼图 java JXL导出Excel源码及jfreechart 生成折线图,饼图
在Java编程语言中,生成各种数据统计图,如柱形图、饼图和折线图,通常会使用第三方库,例如jFreeChart。jFreeChart是一个功能强大的图表库,能够帮助开发者创建高质量的2D图表,广泛应用于数据分析、报告生成以及...
JFreeChart是一个强大的Java库,它可以用来创建多种类型的图表,包括柱形图、饼图和折线图。本篇文章将详细介绍如何使用JFreeChart来实现这些统计图形。 首先,为了使用JFreeChart库,我们需要导入以下三个依赖库:...
java-echart.js柱状图、饼状图、折线图 /** * 柱状图 * @param classRoom * @param req * @param resp * @param model * @return */ @RequestMapping(value = "/zhuzhuangtu") public String ...
在Java的Swing环境中,JFreeChart库是一个强大的工具,用于创建各种图表,包括柱状图、折线图等。本教程将详细讲解如何利用JFreeChart在Swing应用程序中实现这些功能,以及如何在折线图中动态添加线。 首先,确保你...
在Java编程环境中,JFreeChart库是一个强大的工具,用于创建各种复杂的图表,包括柱状图、折线图和雷达图。这些图表对于数据可视化和数据分析非常有用,可以帮助开发者直观地展示大量信息。以下是对给定文件中每个...
**JS+Java折线图**是一种常见的数据可视化技术,它结合了JavaScript(JS)和Java两种编程语言的优势,用于在Web应用中展示动态、交互式的折线图表。Highcharts是一个用纯JavaScript编写的高效图表库,它允许开发者...
Java中的JFreeChart库是一个强大的工具,用于生成各种类型的图表,包括柱状图、饼状图和折线图。在本教程中,我们将深入探讨如何使用JFreeChart创建这些图表,以及如何用随机生成的数据作为数据源。 首先,...
JFreeChart 是一个开源的Java库,用于生成高质量的2D图表,如折线图、饼图、柱状图和堆栈柱状图等。它广泛应用于数据分析、报告和应用程序中,提供丰富的自定义选项来满足各种视觉需求。在本项目中,你将找到能够...
在Java编程语言中,开发人员经常需要创建各种类型的图表来可视化数据,折线图就是其中常见的一种。这个"zx_java_折线图例子_cowrab_"项目提供了一个纯代码实现的折线图示例,无需依赖任何第三方库,使得开发者可以更...
在报表生成领域,iText 提供了丰富的功能,包括创建柱形图、饼图和折线图,使得开发者可以轻松地在PDF文档中嵌入各类图表,增强报告的可视化效果。 在使用iText进行报表制作时,柱形图、饼图和折线图是数据可视化的...