1、jFreeChart使用总结jFreeChart使用总结这里分三部分来介绍 jFreeChart 。第一部分介绍jFreeChart产生图形的流程及相关的重要的类;第二部分介绍四种常用的报表图(饼图、柱状图、折线图、时间序列图);第三部分介绍在图形中增加Item Lable 。 jFreeChart 的版本是jfreechart-1.0.0-pre2(1)一、jFreeChart产生图形的流程 创建一个数据源(dataset)来包含将要在图形中显示的数据,创建一个 JFreeChart 对象来代表要显示的图形 把图形输出 重要的类和接口: org.jfree.data.general.Data
2、set 所有数据源类都要实现的接口 org.jfree.chart.ChartFactory 由它来产生 JFreeChart 对象 org.jfree.chart.JFreeChart 所有对图形的调整都是通过它噢! org.jfree.chart.plot.Plot 通过JFreeChart 对象获得它,然后再通过它对图形外部部分(例:坐标轴)调整 注意:它有很多子类,一般都下嗍造型到它的子类! org.jfree.chart.renderer.AbstractRenderer 通过JFreeChart 对象获得它,然后再通过它对图形内部部分 (例:折线的类型)调整。同样,针对不同类型的报
3、表图,它有 着不同的子类实现!在下面我们简称它为 Renderer 下面我们结合不同类型的图形来具体分析这个流程。 二、饼图 饼图的dataset 一般是用PieDataset 接口,具体实现类是 DefaultPieDataset 1、创建一个数据源(dataset): private static PieDataset createDataset() DefaultPieDataset defaultpiedataset = new DefaultPieDataset(); /注意是DefaultPieDataset! defaultpiedataset.setValue(One, new
4、 Double(43.200000000000003D); defaultpiedataset.setValue(Two, new Double(10D); defaultpiedataset.setValue(Three, new Double(27.5D); defaultpiedataset.setValue(Four, new Double(17.5D); return defaultpiedataset; 2、由ChartFactory 产生 JFreeChart 对象 private static JFreeChart createChart(PieDataset piedatas
5、et) JFreeChart jfreechart = ChartFactory.createPieChart(Pie Chart Demo 1, /图形标题名称 piedataset, / dataset true, / legend? true, / tooltips? false); /URLs? PiePlot pieplot = (PiePlot)jfreechart.getPlot(); /通过JFreeChart 对象获得 plot:PiePlot! pieplot.setNoDataMessage(No data available); / 没有数据的时候显示的内容 retur
6、n jfreechart; 一些重要的方法: pieplot.setExplodePercent(0,0.3D) /把Lable 为One 的那一块”挖“出来30% 3、输出略 三、柱状图 柱状图的dataset 一般是用CatagoryDataset接口(具体实现类是DefaultCategoryDataset),也会用 IntervalXYDataset 接口 1、创建一个数据源(dataset): private static CategoryDataset createDataset() String series1 = First; String series2 = Second;
7、String series3 = Third; String category1 = Category 1; String category2 = Category 2; String category3 = Category 3; String category4 = Category 4; String category5 = Category 5; DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset(); defaultcategorydataset.addValue(1.0D, serie
8、s1, category1); defaultcategorydataset.addValue(4D, series1, category2); defaultcategorydataset.addValue(3D, series1, category3); defaultcategorydataset.addValue(5D, series1, category4); defaultcategorydataset.addValue(5D, series1, category5); defaultcategorydataset.addValue(5D, series2, category1);
9、 defaultcategorydataset.addValue(7D, series2, category2); defaultcategorydataset.addValue(6D, series2, category3); defaultcategorydataset.addValue(8D, series2, category4); defaultcategorydataset.addValue(4D, series2, category5); defaultcategorydataset.addValue(4D, series3, category1); defaultcategor
10、ydataset.addValue(3D, series3, category2); defaultcategorydataset.addValue(2D, series3, category3); defaultcategorydataset.addValue(3D, series3, category4); defaultcategorydataset.addValue(6D, series3, category5); return defaultcategorydataset; 2、由ChartFactory 产生 JFreeChart 对象 private static JFreeCh
11、art createChart(CategoryDataset categorydataset) JFreeChart jfreechart = ChartFactory.createBarChart(Bar Chart Demo, /图形标题名称 Category,/domain 轴 Lable 这里先简单理解为横坐标Lable好了 Value, /range 轴 Lable 这里也先简单理解为纵坐标Lable好了 categorydataset, / dataset PlotOrientation.VERTICAL, /垂直显示 true, / legend? true, / toolti
12、ps? false); /URLs? jfreechart.setBackgroundPaint(Color.white); /设定背景色为白色 CategoryPlot categoryplot = jfreechart.getCategoryPlot(); /获得 plot:CategoryPlot! categoryplot.setBackgroundPaint(Color.lightGray); /设定图表数据显示部分背景色 categoryplot.setDomainGridlinePaint(Color.white); /横坐标网格线白色 categoryplot.setDomai
13、nGridlinesVisible(true); /可见 categoryplot.setRangeGridlinePaint(Color.white); /纵坐标网格线白色 /下面两行使纵坐标的最小单位格为整数 NumberAxis numberaxis = (NumberAxis)categoryplot.getRangeAxis(); numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits(); BarRenderer barrenderer = (BarRenderer)categoryplot.getRend
14、erer(); /获得renderer 注意这里是下嗍造型 到BarRenderer! barrenderer.setDrawBarOutline(false); / Bar的外轮廓线不画 GradientPaint gradientpaint = new GradientPaint(0.0F, 0.0F, Color.blue, 0.0F, 0.0F, new Color(0, 0, 64); /设定特定颜色 GradientPaint gradientpaint1 = new GradientPaint(0.0F, 0.0F, Color.green, 0.0F, 0.0F, new Co
15、lor(0, 64, 0); GradientPaint gradientpaint2 = new GradientPaint(0.0F, 0.0F, Color.red, 0.0F, 0.0F, new Color(64, 0, 0); barrenderer.setSeriesPaint(0, gradientpaint); /给series1 Bar设定上面定义的颜色 barrenderer.setSeriesPaint(1, gradientpaint1); /给series2 Bar 设定上面定义的颜色 barrenderer.setSeriesPaint(2, gradientpa
16、int2); /给series3 Bar 设定上面定义的颜色 CategoryAxis categoryaxis = categoryplot.getDomainAxis(); /横轴上的 Lable 45度倾斜 categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); return jfreechart; 一些重要的方法:(增加一块标记) IntervalMarker intervalmarker = new IntervalMarker(4.5D, 7.5D); intervalmarker.setLabel
17、(Target Range); intervalmarker.setLabelFont(new Font(SansSerif, 2, 11); intervalmarker.setLabelAnchor(RectangleAnchor.LEFT); intervalmarker.setLabelTextAnchor(TextAnchor.CENTER_LEFT); intervalmarker.setPaint(new Color(222, 222, 255, 128); categoryplot.addRangeMarker(intervalmarker, Layer.BACKGROUND)
18、; 四、折线图 折线图的dataset 两种CatagoryDataset接口(具体实现类是DefaultCategoryDataset),XYDataset 接口 1、CatagoryDataset接口: A、创建一个数据源(dataset): private static CategoryDataset createDataset() String series1 = First; String series2 = Second; String series3 = Third; String type1 = Type 1; String type2 = Type 2; String typ
19、e3 = Type 3; String type4 = Type 4; String type5 = Type 5; String type6 = Type 6; String type7 = Type 7; String type8 = Type 8; DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset(); defaultcategorydataset.addValue(1.0D, series1, type1); defaultcategorydataset.addValue(4D, ser
20、ies1, type2); defaultcategorydataset.addValue(3D, series1, type3); defaultcategorydataset.addValue(5D, series1, type4); defaultcategorydataset.addValue(5D, series1, type5); defaultcategorydataset.addValue(7D, series1, type6); defaultcategorydataset.addValue(7D, series1, type7); defaultcategorydatase
21、t.addValue(8D, series1, type8); defaultcategorydataset.addValue(5D, series2, type1); defaultcategorydataset.addValue(7D, series2, type2); defaultcategorydataset.addValue(6D, series2, type3); defaultcategorydataset.addValue(8D, series2, type4); defaultcategorydataset.addValue(4D, series2, type5); def
22、aultcategorydataset.addValue(4D, series2, type6); defaultcategorydataset.addValue(2D, series2, type7); defaultcategorydataset.addValue(1.0D, series2, type8); defaultcategorydataset.addValue(4D, series3, type1); defaultcategorydataset.addValue(3D, series3, type2); defaultcategorydataset.addValue(2D,
23、series3, type3); defaultcategorydataset.addValue(3D, series3, type4); defaultcategorydataset.addValue(6D, series3, type5); defaultcategorydataset.addValue(3D, series3, type6); defaultcategorydataset.addValue(4D, series3, type7); defaultcategorydataset.addValue(3D, series3, type8); return defaultcategorydataset; B、由ChartFactory 产生 JFreeChart 对象 (与上面重复的部分就不再注释) private static JFreeChart createChart(CategoryDataset categorydataset) JFreeChart jfreechart = ChartFactory.createLineChart(Line Chart Demo 1, Type, Value, categorydataset, PlotOrientation.VERTICAL, true,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1