1.基本配置
在JFreeChart的官方网站(http://www.jfree.org/jfreechart/index.html)上可以下载到该插件,该插件有两个版本:
jfreechart-1.0.6.zip,该版本适用于Windows系统。
jfreechart-1.0.6.tar.gz,该版本适用于UNIX / Linux系统。
本书所有案例的开发环境均为Windows系统,解压缩jfreechart-1.0.6.zip后将得到一个名为jfreechart-1.0.6的文件夹,只需将lib子文件夹内的如下文件拷贝到WEB应用程序的/WEB-INF/lib文件夹内:
jfreechart-1.0.5.jar
jcommon-1.0.10.jar
junit.jar
gnujaxp.jar
servlet.jar
并且在/WEB-INF/web.xml文件中添加如下代码,就可以利用JFreeChart插件生成统计图表了。
<servlet>
<servlet-name>DisplayChart</servlet-name>
<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DisplayChart</servlet-name>
<url-pattern>/servlet/DisplayChart</url-pattern>
</servlet-mapping>
2.开发思路
在利用JFreeChart插件生成统计图表时,大体有两种开发思路,一种是通过工厂类ChartFactory创建JFreeChart实例,另一种是通过JFreeChart类创建JFreeChart实例。
在通过工厂类ChartFactory创建JFreeChart实例时,基本的开发思路如下:
(1)创建相应统计图的数据集实例。
(2)通过工厂类ChartFactory创建JFreeChart实例,ChartFactory类中的所有方法均需要传入一个数据集实例。
(3)订制图片和绘图区的绘制属性,该步可选。
(4)生成指定格式的图片,并返回生成图片的名称。
(5)组织图片浏览路径。
(6)通过HTML中的<img>元素显示图片。
在通过JFreeChart类创建JFreeChart实例时,基本的开发思路如下:
(1)创建相应统计图的绘图区实例;
(2)创建相应统计图的数据集实例,并传入绘图区实例;
(3)订制绘图区的绘制属性,例如绘图区的背景色,柱形图坐标轴的绘制属性,饼形图图例的填充色等,该步可选;
(4)通过JFreeChart类创建JFreeChart实例,JFreeChart类的所有构造方法均需要传入一个绘图区实例;
(5)订制图片的绘制属性,例如图片的标题、背景色等,该步可选;
(6)生成指定格式的图片,并返回生成图片的名称;
(7)组织图片浏览路径;
(8)通过HTML中的<img>元素显示图片。
3.核心API简介
在使用JFreeChart插件之前,先了解一下该插件的核心类及其功能,这对将来能够得心应手的使用该插件是非常重要的,JFreeChart核心类及其功能请参见表5.1。
表5.1
JFreeChart核心类及其功能
类名 | 功能 |
JFreeChart | 图表对象。生成任何类型的图表都要通过该对象,JFreeChart插件提供了一个工厂类ChartFactory,用来创建各种类型的图表对象 |
XXXDataset | 数据集对象。用来保存绘制图表的数据,不同类型的图表对应着不同类型的数据集对象 |
XXXPlot | 绘图区对象。如果需要自行定义绘图区的相关绘制属性,需要通过该对象进行设置 |
XXXAxis | 坐标轴对象。用来定义坐标轴的绘制属性 |
XXXRenderer | 图片渲染对象。用于渲染和显示图表 |
XXXURLGenerator | 链接对象。用于生成Web图表中项目的鼠标单击链接 |
XXXToolTipGenerator | 图表提示对象。用于生成图表提示信息,不同类型的图表对应着不同类型的图表提示对象 |
通过工厂类ChartFactory,可以创建各种类型的图表对象,常用的创建JFreeChart实例的方法及其功能请参见表5.2。
表5.2
ChartFactory类中常用方法及其功能
名称 | 功能 |
createBarChart()和createBarChart3D() | 分别用来创建绘制普通柱形图和3D柱形图的JFreeChart实例,它们基于的是DefaultCategoryDataset类型的数据集 |
createXYBarChart() | 用来创建绘制普通柱形图的JFreeChart实例,它基于的是TimeSeries类型的数据集,TimeSeries数据集主要用来绘制与日期和时间相关的统计图 |
createStackedBarChart()和createStackedBarChart3D() | 它们同createBarChart()和createBarChart3D()的功能相同,只是绘制出的柱形图效果不同,它们可以互换使用 |
createPieChart()和createPieChart3D() | 分别用来创建绘制普通饼形图和3D饼形图的JFreeChart实例,它们基于的是DefaultPieDataset类型的数据集 |
createLineChart()和createLineChart3D() | 分别用来创建绘制普通折线图和3D折线图的JFreeChart实例,它们基于的是DefaultCategoryDataset类型的数据集 |
createXYLineChart() | 用来创建绘制普通折线图的JFreeChart实例,它基于的是TimeSeries类型的数据集,TimeSeries数据集主要用来绘制与日期和时间相关的统计图 |
createAreaChart() | 用来创建绘制普通区域图的JFreeChart实例,它基于的是DefaultCategoryDataset类型的数据集 |
createXYAreaChart() | 用来创建绘制普通区域图的JFreeChart实例,它基于的是TimeSeries类型的数据集,TimeSeries数据集主要用来绘制与日期和时间相关的统计图 |
createTimeSeriesChart() | 用来创建绘制普通时序图的JFreeChart实例,时序图与折线图有些类似,不过时序图提供了绘制移动平均线的功能,通过给定的数据集实例,可以自动计算任意时间段的移动平均值,它基于的是TimeSeries类型的数据集,TimeSeries数据集主要用来绘制与日期和时间相关的统计图 |
注意:ChartFactory类中的所有方法均需要传入一个数据集实例,并且返回值类型均为JFreeChart