快速业务通道

报表应用系列——图表JFreeChart: 第3章 饼状图 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22

报表应用系列——图表JFreeChart: 第3章 饼状图

时间:2010-12-25 BlogJava 临远

3.1. 简单饼图

饼图必须使用DefaultPieDataset为图表提供数据。

DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("Spring Security", 100); dataset.setValue("jBPM 4", 200); dataset.setValue("Ext JS", 300); dataset.setValue("JFreeChart", 100);

这次我们使用setValue向dataset中添加数据,第一个参数是数据的名称,第二个数据是数据的值。

这里就暴露出JFreeChart的一个问题,竟然不能使用统一的dataset接口来设置数据。

下一步通过CharFactory的createPieChart方法创建饼图。

JFreeChart chart = ChartFactory.createPieChart(    "chart", // 标题    dataset, // 数据    true, // 是否使用legend    false, // 是否使用tooltip    false // 是否使用url链接 );

最后使用CharUtilities将JFreeChart导出成图片。

图 3.1. 简单饼图

报表应用系列——图表JFreeChart: 第3章 饼状图(2)

时间:2010-12-25 BlogJava 临远

完整代码如下所示:

DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("Spring Security", 100); dataset.setValue("jBPM 4", 200); dataset.setValue("Ext JS", 300); dataset.setValue("JFreeChart", 100); JFreeChart chart = ChartFactory.createPieChart("chart", dataset,      true, false, false); FileOutputStream fos = null; try {    fos = new FileOutputStream("target/pie1.png");    ChartUtilities.writeChartAsPNG(fos, chart, 400, 300); } finally {    fos.close(); }

3.2. 炸开的饼图

把饼图中的某一部分提取出来,强调显示。

调用PiePlot中的setExplodePercent方法来实现这一功能。

PiePlot plot = (PiePlot) chart.getPlot(); plot.setExplodePercent("JFreeChart", 0.3);

这里又暴露出一个JFreeChart里的问题,获得Plot也要强制转换成对应的类型才能使用。

图 3.2. 炸开的饼图

3.3. 处理空值和负值

如果设置了值为0或null的值,图表中会显示标签,但是我们看不到数值。

dataset.setValue("null", null); dataset.setValue("zero", 0);

图 3.3. 空值和负值

如果不希望在图表中显示为空的数据,需要调用PiePlot的两个方法。

plot.setIgnoreZeroValues(true); plot.setIgnoreNullValues(true);

JFreeChart会一直忽略负值,不需要特殊处理就不会显示在图表中。

报表应用系列——图表JFreeChart: 第3章 饼状图(3)

时间:2010-12-25 BlogJava 临远

3.4. 三维饼图

将createPieChart替换为createPieChart3D就可以实现三维饼图。

图 3.4. 三维饼图

3.5. 多重饼图

要想使用多重饼图,必须先把PieDataset改成CategoryDataset。

DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, "Spring Security", "Jan"); dataset.addValue(200, "jBPM 4", "Jan"); dataset.addValue(300, "Ext JS", "Jan"); dataset.addValue(100, "JFreeChart", "Jan"); dataset.addValue(60, "Spring Security", "Fer"); dataset.addValue(100, "jBPM 4", "Fer"); dataset.addValue(340, &qu

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号