JFreeChart使用总结.docx
《JFreeChart使用总结.docx》由会员分享,可在线阅读,更多相关《JFreeChart使用总结.docx(43页珍藏版)》请在冰豆网上搜索。
JFreeChart使用总结
JFREECHART
使用总结
目录
一、JFreeChart简介3
二、JFreeChart的获取3
三、JFreeChart环境配置3
四、JFreeChart功能介绍4
五、JFreeChart核心类库介绍4
六、JFreeChart开发5
第一步:
建立DataSet数据源5
第二步:
创造JFreeChart5
第三步:
设置图形显示的属性6
第四步:
写入图片或输出界面6
七、JFREECHART图片在web中的应用8
7.1在eclipse中创建tomcat工程8
7.2创建web.xml8
7.3配置web.xml9
7.4创建含有JFreeChart图片的页面9
7.5配置server.xml12
7.6测试页面12
八、JFreeChart使用的优缺点13
1.优点:
13
2.缺点:
13
附录1:
JFreeChart中文API(ApplicationProgrammingInterface)14
附录2:
GNU通用公共许可证(中文版)22
导言22
0.定义23
1.源代码23
2.基本的许可24
3.保护用户的合法权利不受反破解法侵犯24
4.发布完整副本24
5.发布修改过的源码版本24
6.发布非源码形式的副本25
7.附加条款26
8.终止授权27
9.获取副本不需要接受本授权27
10.下游接收者的自动授权27
11.专利权28
12.不要放弃别人的自由29
13.和GNUAffero通用公共授权一起使用29
14.本授权的修订版29
15.免责申明29
16.责任范围30
17.第15和16节的解释30
一、JFreeChart简介
JFreeChart是开放源代码站点SourceF上的一个JAVA项目,它主要用来各种各样的图表,这些图表包括:
饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。
这些不同式样的图表基本上可以满足目前的要求。
当在项目中客户需要图标分析时,JFreeChart便是最好的选择,JFreeChart是开源项目,可以方便的从其官方网站上获得其源代码,可以方便的与Swing相结合使用,还可以导入到Web页面中,更是可以方便的利用其工厂方法将图表写入jpeg或者png格式的图片中,本文档将简要介绍小JFreeChart的使用。
二、JFreeChart的获取
JFreeChart是JFreeChart公司在开源网站SourceF上的一个项目,该公司的主要产品有如下:
1.JFreeReport:
报表解决工具
2.JFreeChart:
Java图形解决方案(Application/Applet/Servlet/Jsp)
3.JCommon:
JFreeReport和JFreeChart的公共类库
4.JFreeDesigner:
JFreeReport的报表设计工具
我们可以从jfree官方网站上获取最新版本和相关资料(但是jfree的document需要40美金才能获取),
获取地址:
http:
//www.jfree.org/jfreechart/index.html(同时可以获得简明介绍)
我们以当前最新版本:
jfreechart-1.0.12.zip为例子进行说明。
三、JFreeChart环境配置
1、解压jfreechart-1.0.12.zip到指定位置,其中source是jfreechart的源码,jfreechart-1.0.12-demo.jar是例子程序。
2、为了配置成功,我们需要关注的文件有如下三个:
jfreechart-1.0.12.jar、lib\jcommon-1.0.15.jar、lib\gnujaxp.jar。
JCommon-1.0.15.jar是一组有用的classes集合.这个类库包含了以下功能:
*文本工具类(textutilities), *用来显示关于应用程序信息的用户界面类, *布局定制管理器, *一个日期选择面板, *序列化工具类, *XML解析器支持类。
3、如果是Application开发,把上述三个文件拷贝到%JAVA_HOME%\LIB中,同时在环境变量CLASSPATH中加入。
在开发中,还有在工程中导入jfreechart-1.0.12.jar,jcommon-1.0.15.jar,否则会在文件第一行提示有错误。
如果是WEB开发,以TOMCAT中的一个WEB项目TEST为例子说明:
把上述三个文件拷贝到TEST\WEB-INF\LIB中,然后修改TEST\WEB-INF\web.xml文件,在其中加入如下代码:
DisplayChart
org.jfree.chart.servlet.DisplayChart
DisplayChart
/servlet/DisplayChart
至此jfreechart的配置就完成了,下面就可以进行jfreechart的开发了。
这里值得提出的是jfreechart的类结构设计前后兼容性不是很好,不同版本的jfreechart中类库结构可能不一样,有时候可能需要查源码。
四、JFreeChart功能介绍
JFreeChart是一个免费的Java图表库,让开发人员开发出专业的图表显示在他们的应用程序。
JFreeChart'sextensivefeaturesetincludJFreeChart的广泛的功能包括:
∙aconsistentandwell-documentedAPI,supportingawiderangeofcharttypes;翔实的API,支持各种各样的图表类型;
∙aflexibledesignthatiseasytoextend,andtargetsbothserver-sideandclient-sideapplications;一种灵活的设计,易于扩展,和指标均服务器端和客户端的应用;
∙支持多种类型的输出,包括Swing界面,图像文件(包括PNG和JPEG格式),和矢量图形文件格式;
∙JFreeChart是“开源”,或更具体的免费软件。
使用JFREECHART能够是新下列图表:
饼图(二维和三维),柱状图(水平,垂直),线图,点图,时间变化图,甘特图,股票行情图,混和图,温度计图,刻度图等常用商用图表。
五、JFreeChart核心类库介绍
jfreechart源码主要由两个大的包组成:
org.jfree.chart和org.jfree.data。
其中前者主要与图形本身有关,后者与图形显示的数据有关。
核心类主要有:
org.jfree.chart.JFreeChart:
图表对象,任何类型的图表的最终表现形式都是在该对象进行一些属性的定制。
JFreeChart引擎本身提供了一个工厂类用于创建不同类型的图表对象。
org.jfree.data.category.XXXDataSet:
数据集对象,用于提供显示图表所用的数据。
根据不同类型的图表对应着很多类型的数据集对象类。
org.jfree.chart.plot.XXXPlot:
图表区域对象,基本上这个对象决定着什么样式的图表,创建该对象的时候需要Axis、Renderer以及数据集对象的支持。
org.jfree.chart.axis.XXXAxis:
用于处理图表的两个轴:
纵轴和横轴。
org.jfree.chart.render.XXXRender:
负责如何显示一个图表对象。
org.jfree.chart.urls.XXXURLGenerator:
用于生成Web图表中每个项目的鼠标点击链接。
XXXXXToolTipGenerator:
用于生成图象的帮助提示,不同类型图表对应不同类型的工具提示类。
六、JFreeChart开发
要建立一个JFreeChart图形主要有以下三个步骤(以柱图为例):
第一步:
建立DataSet数据源
BarChart使用的dataset接口是org.jfree.data.defaultcategorydataset的dataset。
使用categorydataset的子类org.jfree.data.defaultcategorydataset,再用addValue()方法把资料加入到dataset中,建立包含数值的二维阵列,代码如下:
DefaultCategoryDatasetdataset=newDefaultCategoryDataset();
dataset.addValue(100,"100","苹果");
dataset.addValue(200,"200","梨子");
dataset.addValue(300,"300","葡萄");
dataset.addValue(400,"400","香蕉");
dataset.addValue(500,"500","荔枝");
dataset.addValue(600,"600","西瓜");
或者使用org.jfree.data.datasetutilities,CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);
其中:
rowKeys表示X轴数据,columnKeys表示Y轴数据,data表示填充柱状图所要的实际数据(来自于数据库)。
第二步:
创造JFreeChart
要用dataset创造一个JFreeChart类别,我们并不直接实例化出一个JFreeChart实例,而是使用ChartFactory工厂类来创造一个JFreeChart实例。
代码如下:
JFreeChartchart=ChartFactory.createBarChart3D(
"水果产量图",//JFreeChart标题
"水果",//目录轴显示标签
"产量",//数值轴显示标签
dataset,//数据源
PlotOrientation.VERTICAL,//图表方向:
水平、垂直
true,//是否是否显示图例(对于简单的柱状图是false)
false,//是否生成热点工具
false);//是否生成URL连接
第三步:
设置图形显示的属性
a ) ValueAxis类,设置柱到图上下边的距离。
实现方法是:
ValueAxis rangeAxis = plot.getRangeAxis();
设置最高的一个柱与图片顶端的距离:
rangeAxis.setUpperMargin(0.15)
设置最低的一个柱与图片底端的距离:
rangeAxis.setLowerMargin(0.15)
b)org.jfree.chart.renderer.BarRenderer3D类,设置图形上显示的数值。
实现方法如下:
BarRenderer3D renderer = new BarRenderer3D();
renderer.setBaseOutlinePaint(Color.BLACK);
设置 Wall 的颜色:
renderer.setWallPaint(Color.gray);
设置每个柱的颜色:
renderer.setSeriesPaint(0, new Color(0, 0, 255));
renderer.setSeriesPaint(1, new Color(0, 100, 255));
renderer.setSeriesPaint(2, Color.GREEN);
设置每个柱的 Outline 颜色
renderer.setSeriesOutlinePaint(0, Color.BLACK);
renderer.setSeriesOutlinePaint(1, Color.BLACK);
renderer.setSeriesOutlinePaint(2, Color.BLACK);
设置每个地区所包含的平行柱之间的距离
renderer.setItemMargin(0.1);
显示每个柱的数值,并修改该数值的字体属性
renderer.setItemLabelFont(new Font("黑体",Font.PLAIN,12));
renderer.setItemLabelsVisible(true);
为图形加入超连接
renderer.setItemURLGenerator(new StandardCategoryURLGenerator());
renderer.setToolTipGenerator(new StandardCategoryToolTipGenerator());
第四步:
写入图片或输出界面
a.写入图片
利用ChartUtilities.writeChartAsJPEG(fos_jpg,//图片输出地址
1.0f,//设置图片质量
chart,//指定chart
500,//设置图片宽度
400);//设置图片高度
在打开图片时,有可能出现异常,注意扑捉异常。
代码如下:
FileOutputStreamfos_jpg=null;
try{
fos_jpg=newFileOutputStream("D:
fruit.jpg");
ChartUtilities.writeChartAsJPEG(fos_jpg,1.0f,chart,500,400);
}finally{
try{
fos_jpg.close();
}catch(Exceptione){}
}
b.显示图片
使用ChartFrame类,
ChartFrameChartFrame=newChartFrame(“水果产量图”,chart);
chartFrame.pack();
chartFrame.setFont(newFont("宋体",Font.BOLD,20));
chartFrame.setVisible(true);
柱状图实例结果输出:
其他的图创建方法都类似,但是每种图形都将对应每个dataset,所以在使用的时候注意选择创建dataset数据源。
七、JFREECHART图片在web中的应用
通过上边的介绍,我们已经知道JFreechart是很好的Java图表生成工具,利用JFreeChart可以很方便的生产饼图、折线图、柱图等图表。
可以更加形象的分析数据。
本部分主要介绍JFreeChart生成的图片在Web工程中的应用。
7.1在eclipse中创建tomcat工程
在eclipse中创建tomcat工程,须先在eclipse中安装tomcat插件。
Tomcat插件是开源项目,可以在其官方网站免费获得。
Tomcat插件获得的网站是,在IDE中选择“Window”菜单的“CustomizePerspective…”,展开弹出窗口的Other结点,可以看到下面有Tomcat选项,打上钩按“OK”关闭窗口。
做完这一步,在IDE的工具栏就会能看到tomcat小猫的图标。
然后在到“Windows”菜单的“perferences”去做一些关于tomcat的设置,正确选择所安装的tomcat版本(我使用的是Tomcat5.5版本),指定tomcat主目录和tomcat的server.xml配置文件,然后展开Tomcat,选下边的JVMSetting,选择JRE为“DetectedVM”,确认无误后点击”OK”完成设置。
好了,完成以上的设置,此时就可以在eclipse中创建一个tomcat工程,选择“IDE”的“file”菜单下面的“Project”菜单,选择”TomcatProject”,然后输入工程名字(TestJFreeChartWeb),点击“Finnish”完成工程创建。
7.2创建web.xml
在Tomcat工程目录下WEB-INF目录下,创建web.xml。
具体步骤为:
1.在右击Tomcat工程目录下WEB-INF目录,选择“new”->“File”。
2.输入file名称为web.xml,点击“finish”完成创建。
3.在打开的file中输入以下内容:
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEweb-appPUBLIC
"-//SunMicrosystems,Inc.//DTDWebApplication2.3//EN"
"
至此完成web.xml的创建。
7.3添加相关JAR文件
1.右击项目名选择“BuildPath”,在其下拉框中选择最后一个“ConfigBulidPath”。
2.选择“Libraries”。
3.然后在选择“AddExternalJARs…”.
4.在弹出的对话框中选择在/common/lib/jasper-runtime.jar,jsp-api.jar,servlet-api.jar等JAR包文件。
在加入JFreeChart需要的jfreechart-1.0.12.jar,jcommon-1.0.15.jar即可。
5.再将jfreechart-1.0.12.jar,jcommon-1.0.15.jar拷到工程目录下WEB-INF/lib文件夹中即可。
7.3配置web.xml
在web.xml文件和中间加入以下的配置。
DisplayChart
org.jfree.chart.servlet.DisplayChart
DisplayChart
/servlet/DisplayChart
7.4创建含有JFreeChart图片的页面
1.右击Tomcat工程目录下WEB-INF目录,选择“new”->“File”。
2.输入file名称为xyline.jsp,点击“finish”完成创建。
3.打开File文件,在文件中输入以下代码:
<%@pagecontentType="text/html;charset=GB2312"%>
—导入JFreeChart需要的包-->
<%@pageimport="org.jfree.*,
java.io.*"%>
java.awt.Font,
org.jfree.data.category.CategoryDataset,
org.jfree.chart.ChartUtilities,
org.jfree.chart.renderer.category.LineAndShapeRenderer,
org.jfree.chart.labels.StandardCategoryItemLabelGenerator,
org.jfree.chart.plot.CategoryPlot,
org.jfree.data.category.DefaultCategoryDataset,
org.jfree.chart.ChartFactory,
org.jfree.chart.plot.PlotOrientation,
org.jfree.chart.JFreeChart,
org.jfree.chart.servlet.ServletUtilities,
org.jfree.chart.entity.StandardEntityCollection,
org.jfree.chart.ChartRenderingInfo,
org.jfree.chart.imagemap.StandardURLTagFragmentGenerator,
org.jfree.chart.labels.StandardCategoryItemLabelGenerator,
org.jfree.chart.renderer.xy.XYLineAndShapeRenderer,
<%@pageimport="org.jfree.data.general.DatasetUtilities,org.jfree.chart.imagemap.StandardToolTipTagFragmentGenerator
"%>
程序员学历情况调查表<%
//创建折线图需要的数据源
double[][]data={{380,1620,6100,3520,180}};
String[]rowKeys={"人数"};
St