生成饼图
1)创建用于图形生成所要的数据集对象。
实例化类DefaultPieDataset dataset = new DefaultPieDataset()。然后利用DefaultPieDataset类提供的setValue(value1,value2)方法,把从数据存入DefaultPieDataset对象。其中value1是数据名称、value2是数据值。
2)创建图形对象。
实例化JFreeChart chart = ChartFactory.createPieChart3D(title, dataset, true, true, false)createPieChart3D方法是生成3D饼图的方法,createPieChart方法是生成平面饼图的方法。其中title代表图形的标题、dataset就是DefaultPieDataset对象的实例,第一个true表示是否显示图例,第二个true测试下来未明,第三个true为是否显示鼠标指向提示。
3)设置图形显示的属性。
通过Pieplot plot = (PiePlot) chart.getPlot()方法获取plot对象,对图像设置相关属性。
4)生成图形
String filename = ServletUtilities.saveChartAsPNG(JPEG)(chart, 800, 600, info, session);
主要用于把图形对象以图片的形式保存为临时文件。其中的chart就是JFreeChart对象的实例。该方法返回一个文件名。
ChartUtilities.saveChartAsJPEG(new File("D:/Downloads/a.jpg"),chart, 800, 600);
用于把图形对象保存为指定的图片文件,该方法无返回值。
packagejfreechar.test;
importjava.awt.Color;
importjava.awt.Font;
importjava.io.File;
importjava.io.IOException;
importjava.text.DecimalFormat;
importorg.jfree.chart.ChartFactory;
importorg.jfree.chart.ChartFrame;
importorg.jfree.chart.ChartRenderingInfo;
importorg.jfree.chart.ChartUtilities;
importorg.jfree.chart.JFreeChart;
importorg.jfree.chart.entity.StandardEntityCollection;
importorg.jfree.chart.labels.StandardPieSectionLabelGenerator;
importorg.jfree.chart.plot.PiePlot;
importorg.jfree.chart.servlet.ServletUtilities;
importorg.jfree.data.general.DefaultPieDataset;


/***//**
*测试生成饼图实例
*
*@author左杰
*
*/

publicclassPieChartTest...{

/***//**
*创建Dataset,用数据源中的数据填充
*
*@return
*/

publicDefaultPieDatasetgetData()...{
DefaultPieDatasetdataset=newDefaultPieDataset();
dataset.setValue("短信",10);
dataset.setValue("上网",20);
dataset.setValue("本地通话",30);
dataset.setValue("长途",50);
returndataset;
}


/***//**
*创建图表主对象JFreechart,并设置图像显示
*
*@return
*/

publicJFreeChartcreatePieChart()...{
//创建图表主对象JFreechart
JFreeChartchart=ChartFactory.createPieChart("话费统计",getData(),true,
true,true);
//创建3D状图像
//JFreeChartchart=ChartFactory.createPieChart3D("话费统计",getData(),true,
//true,true);
//设置图像的背景颜色
chart.setBackgroundPaint(Color.pink);
//边界线条是否可见
chart.setBorderVisible(false);

//设置图形显示属性
//获得图表显示对象,3D状的
//PiePlot3Dplot=(PiePlot3D)chart.getPlot();
//获得图表显示对象
PiePlotplot=(PiePlot)chart.getPlot();

//图片中显示百分比:自定义方式,{0}表示选项,{1}表示数值,{2}表示所占比例,小数点后两位
plot.setLabelGenerator(newStandardPieSectionLabelGenerator(
"{0}={1}占{2}",newDecimalFormat("00.0"),newDecimalFormat(
"0.00%")));
//图例显示百分比:自定义方式,{0}表示选项,{2}表示数值
plot.setLegendLabelGenerator(newStandardPieSectionLabelGenerator(
"{0}={2}",newDecimalFormat("00.0"),
newDecimalFormat("0.00%")));
//分离图形,只对平面图有效,3D的不可以
plot.setExplodePercent("长途",0.4);
//设置指定块的颜色
plot.setSectionPaint("长途",Color.ORANGE);
//指定图片的透明度(0.0-1.0)
plot.setForegroundAlpha(0.5f);
//分类标签的字体
plot.setLabelFont(newFont("sim-hei",Font.ITALIC,14));
//边界线条是否可见
plot.setSectionOutlinesVisible(false);
//设置图形区域背景颜色
plot.setBackgroundPaint(Color.white);
returnchart;
}


/***//**
*生成图形,保存图像到临时文件,并返回文件名
*
*@paramchart
*JFreeChart对象实例
*@paramw
*图像宽度
*@paramh
*图像高度
*@paramsession
*会话session
*@return
*/

publicStringgetFileName(JFreeChartchart,intw,inth,HttpSessionsession)...{
//生成图形,保存图像到临时文件,并返回文件名
StringfileName="";
StandardEntityCollectionsec=newStandardEntityCollection();
ChartRenderingInfoinfo=newChartRenderingInfo(sec);

try...{
fileName=ServletUtilities.saveChartAsPNG(chart,w,h,info,session);

}catch(Exceptione)...{
System.out.println("Exception-"+e.toString());
fileName="public_error_500x300.png";
}
returnfileName;
}


/***//**
*生成图形,保存到指定文件,文件类型为png
*
*@paramfileName
*指定保存文件的路径及文件名
*@paramchart
*JFreeChart对象实例
*@paramw
*图像宽度
*@paramh
*图像高度
*/

publicvoidSaveFileAsPNG(StringfileName,JFreeChartchart,intw,inth)...{
//生成图形,保存到指定文件,文件类型为png

try...{
ChartUtilities.saveChartAsPNG(newFile(fileName),chart,w,h);

}catch(IOExceptione)...{
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}


/***//**
*生成图形,保存到指定文件,文件类型为jpg
*
*@paramfileName
*指定保存文件的路径及文件名
*@paramchart
*JFreeChart对象实例
*@paramw
*图像宽度
*@paramh
*图像高度
*/

publicvoidSaveFileAsJPEG(StringfileName,JFreeChartchart,intw,inth)...{
//生成图形,保存到指定文件,文件类型为jpg

try...{
ChartUtilities.saveChartAsPNG(newFile(fileName),chart,w,h);

}catch(IOExceptione)...{
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}


publicstaticvoidmain(String[]args)...{
PieChartTestp=newPieChartTest();
JFreeChartchart=p.createPieChart();
//保存为图像文件
p.SaveFileAsPNG("d://piechat.png",chart,800,600);
//显示在GUI上
ChartFrameframe=newChartFrame("话费",chart);
frame.pack();
frame.setVisible(true);
}
}
这个执行后显示的是平面饼图,如果想实现3D饼图,只需要在创建JFreeChart对象时使用ChartFactory.createPieChart3D方法。
运行结果如下:
平面饼图
3D饼图
 |
 |
<!--
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:Description
rdf:about="http://192.168.0.26/pages/viewpage.action?pageId=4882499"
dc:identifier="http://192.168.0.26/pages/viewpage.action?pageId=4882499"
dc:title="生成饼图"
trackback:ping="http://192.168.0.26/rpc/trackback/4882499" />
</rdf:RDF>
--><!--
Root decorator: all decisions about how a page is to be decorated via the
inline decoration begins here.
--><!--
Switch based upon the context. However, for now, just delegate to a decorator
identified directly by the context.
-->
还有很多相关的属性,大家可以研究一下
分享到:
相关推荐
这个1.0.8a 版本是最新的更新,提供了改进的性能、新特性以及对先前版本的修复。在这一版本中,用户可以期待更稳定和功能丰富的体验。 **源码分析** JFreeChart 的源码是完全开放的,这为开发者提供了深入理解图表...
《JFreeChart 1.0.8a:数据统计与报表生成的强大插件》 JFreeChart 是一个广泛使用的开源Java库,版本1.0.8a提供了丰富的图表功能,适用于各种数据可视化需求。它是一个免费的数据统计插件,特别适合开发人员用于...
jfreechart-1.0.8a-swt.jar jfreechart-1.0.8a.jar jfreechart-1.0.8a-experimental.jar jcommon-1.0.12.jar gnujaxp.jar 及网上找到的简单的饼图和柱状图的用例(jfreechart.exe帮助文件)
JFreeChart 1.0.8 版本作为最新版,可能包含了一些新的特性、修复了已知的 bugs,并提升了整体性能。具体更新内容可以查阅官方发布的更新日志。 总结,JFreeChart 是 Java 开发者进行数据可视化的强大工具,它的...
这个1.0.8版本的演示和例子源码包为开发者提供了一个深入理解JFreeChart功能和用法的机会。虽然版本较旧,但其核心概念和大部分API在后续版本中依然保持稳定,因此对于学习和参考来说仍具有很高的价值。 JFreeChart...
JFreeChart 是一个流行的开源 Java 图表库,它提供了一系列丰富的图表类型,包括折线图、柱状图、饼图、散点图、甘特图等,适用于各种数据可视化需求。`jfreechart-1.0.8-javadocs` 是 JFreeChart 1.0.8 版本的官方 ...
在本文中,我们将使用 jfreechart 1.0.8a 版本生成这些类型的图表,并讨论相关的知识点。 一、折线图 折线图是一种常见的图表类型,用于显示数据之间的关系。使用 jfreechart 生成折线图需要以下步骤: 1. 创建 ...
1.0.8版本的JFreeChart Demo源代码是一个宝贵的学习资源,它包含了大量示例,可以帮助我们理解如何利用这个库来构建自定义图表。本文将深入探讨这些源代码中的关键知识点。 1. **图表类型**:JFreeChart支持多种...
标题 "jfreechart-1.0.8-demo.jnlp" 指示的是一个基于JFreeChart库的1.0.8版本的演示程序,其中可能包含了展示JFreeChart功能的各种图表示例。JFreeChart是一个开源Java库,用于创建高质量的、可定制的图表,包括...
在描述中提到的是“因为用的1.0.8a版的jfreechart与1.0.0版本的地方有很多不同,而且图片生成清晰度比老版的高”,表明了JFreeChart随着版本的更新,性能和功能也在不断完善和优化。JFreeChart 1.0.8a作为较新的版本...
这个压缩包“JfreeChart1.0.8-src(源代码).zip”包含了JFreeChart 1.0.8版本的源代码,对于想要深入了解其内部工作原理或者想要对其进行定制和扩展的开发者来说,这是一个非常宝贵的资源。 JFreeChart支持多种...
JFreeChart是一个强大的Java库,专门用于生成高质量的图表,如柱状图、饼图、线图、散点图、甘特图、仪表图和钟表图等。它在Java开发社区中广泛应用,特别是在需要数据可视化的情况下。这个jar包包含了JFreeChart的...
`jfreechart-1.0.8-demo`这个文件很可能是JFreeChart 1.0.8版本的演示程序包,包含了各种预设的示例代码,这些示例涵盖了JFreeChart的主要功能。通过这些示例,我们可以学习如何创建、定制和展示不同的图表类型。 1...
"jfreechart-1.0.8a"指的是JFreeChart的一个特定版本。每个版本可能会有性能优化、新功能的加入或者已知问题的修复。在使用时,应确保与项目的其他依赖兼容,并关注官方文档以获取版本更新信息。 总结来说,...
首先,从文档中提及的JFreeChart及其相关类库开始,我们可以知道JFreeChart库的版本为1.0.8a,而对应的jcommon库版本为1.0.12。这些类库为Java应用程序提供了图表功能,它们需要被添加到项目的类路径中才能正常使用...
JFreeChart 是一个开源的 Java 图形库,它提供了丰富的图表类型,如柱状图、饼图、线形图、散点图、甘特图等,广泛应用于数据分析、报告生成以及各类应用软件的可视化展示。这个库允许开发者通过简单的 API 调用来...
**正文** ...总之,JFreeChart是Java开发中的强大工具,能够帮助开发者生成专业级别的图表。通过理解和运用上述知识点,可以灵活地将可视化元素集成到自己的项目中,增强数据的表现力和用户交互体验。
- 当前最新版本:jfreechart-1.0.3.zip。 2. **添加 JAR 文件**: - 解压下载的文件,将 jfreechart-1.0.3.jar 和 jcommon-1.0.8.jar 添加到项目的 classpath 中。 - gnujaxp.jar 作为额外支持,也应包含在内。 ...