JFreeChart文档帮助

本文介绍如何使用 JFreeChart 插件生成多种类型的统计图表,包括柱状图、饼图、折线图等。文章详细解释了配置步骤、开发思路及核心 API 的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.基本配置

在JFreeChart的官方网站(http://www.jfree.org/jfreechart/index.html)上可以下载到该插件,该插件有两个版本:

l          jfreechart-1.0.6.zip,该版本适用于Windows系统。

l          jfreechart-1.0.6.tar.gz,该版本适用于UNIX / Linux系统。

本书所有案例的开发环境均为Windows系统,解压缩jfreechart-1.0.6.zip后将得到一个名为jfreechart-1.0.6的文件夹,只需将lib子文件夹内的如下文件拷贝到WEB应用程序的/WEB-INF/lib文件夹内:

l          jfreechart-1.0.5.jar

l          jcommon-1.0.10.jar

l          junit.jar

l          gnujaxp.jar

l          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!

如果是通过工厂类ChartFactory创建JFreeChart实例,可以通过ChartFactory类提供的方 法获得绘图区实例;如果是通过JFreeChart类创建JFreeChart实例,则需要在创建JFreeChart实例之前订制好绘图区实例,然后在 创建时传入。常用的绘图区类及其功能请参见表5.3。

表5.3                            常用的绘图区类及其功能

名称

功能

CategoryPlot

在绘制基于DefaultCategoryDataset数据集的柱形图、折线图、区域图时,绘图区为该类型

PiePlot

在绘制普通饼形图时,绘图区为该类型

PiePlot3D

在绘制3D饼形图时,绘图区为该类型

XYPlot

在绘制基于TimeSeries数据集的柱形图、折线图、区域图时,绘图区为该类型

表5.3中介绍的几个绘图区类均继承于Plot类,Plot类提供的经常用来订制绘图区绘制属性的方法及其功能请参见表5.4。

表5.4                            Plot类提供的常用方法及其功能

名称

功能

setBackgroundPaint(Paint paint)

用来设置绘图区的背景色

setBackgroundAlpha(float alpha)

用来设置绘图区背景的透明度,参数在0.0和1.0之间,数值越大透明度越低

setForegroundAlpha(float alpha)

用来设置绘图区前景的透明度,参数在0.0和1.0之间,数值越大透明度越高

setNoDataMessage(String message)

用来设置在没有绘图数据时在绘图区显示的提示信息

setNoDataMessageFont(Font font)

用来设置没有绘图数据时显示的提示信息的字体

setNoDataMessagePaint(Paint paint)

用来设置没有绘图数据时显示的提示信息的颜色

CategoryPlot类提供的经常用来订制绘图区绘制属性的方法及其功能请参见表5.5。

表5.5                            CategoryPlot类提供的常用方法及其功能

名称

功能

setDataset(CategoryDataset dataset)和setDataset(int, CategoryDataset)

均用来设置绘图数据集实例,后者的第一个参数为数据集的唯一标识值,前者是采用默认标识值(0)。如果在一个绘图区中只包含一个分类轴和一个数值轴,建议使用前者;否则,一定要通过后者为每个数据集实例指定一个唯一标识值

setDomainAxis(CategoryAxis axis)

用来设置分类轴实例

setDomainAxisLocation(AxisLocation location)

用来设置分类轴的绘制位置,入口参数常量在org.jfree.chart.axis.AxisLocation类中做了定义

setDomainGridlinesVisible(boolean visible)

用来设置分类轴标记线是否可见,默认为不可见(false)

setDomainGridlineStroke(Stroke stroke)

用来设置分类轴标记线的绘制风格

setDomainGridlinePaint(Paint paint)

用来设置分类轴标记线的颜色

setRangeAxis(ValueAxis axis)

用来设置数据轴实例

setRangeAxisLocation(AxisLocation location)

用来设置数据轴的绘制位置,入口参数常量在org.jfree.chart.axis.AxisLocation类中做了定义

setRangeGridlinesVisible(boolean visible)

用来设置数据轴标记线是否可见,默认为可见(true)

setRangeGridlineStroke(Stroke stroke)

用来设置数据轴标记线的绘制风格

setRangeGridlinePaint(Paint paint)

用来设置数据轴标记线的颜色

mapDatasetToDomainAxis(int, int)

用来将指定标识值的绘图数据集与分类轴建立关联

mapDatasetToRangeAxis(int, int)

用来将指定标识值的绘图数据集与数据轴建立关联

PiePlot类提供的经常用来订制绘图区绘制属性的方法及其功能请参见表5.6。

表5.6                            PiePlot类提供的常用方法及其功能

名称

功能

setCircular(boolean flag)

用来设置饼图为正圆还是椭圆,默认为正圆(true)。建议在绘制普通饼图时采用正圆,在绘制3D饼图时采用椭圆

setStartAngle(double angle)

用来设置饼图第一段圆弧的起始绘制角度,默认为在饼图的正上方开始绘制。水平方向饼图的最左侧为0度,最右侧为180度;垂直方向饼图的正上方为90度,正下方为270度

setDirection(Rotation direction)

用来设置饼图的绘制方向,默认为按顺时针方向绘制。Rotation.CLOCKWISE代表顺时针,Rotation.ANTICLOCKWISE代表逆时针

setLegendLabelGenerator(PieSectionLabelGenerator generator)

用来设置饼图中图例的输出样式

setLabelGenerator(PieSectionLabelGenerator generator)

用来设置饼图中普通标签的输出样式,当设置为NULL时,则不显示普通标签及连接线

setLabelFont(Font font)

用来设置饼图中普通标签的字体样式

setLabelPaint(Paint paint)

用来设置饼图中普通标签的字体颜色

setLabelBackgroundPaint(Paint paint)

用来设置饼图中普通标签的背景颜色

setLabelOutlinePaint(Paint paint)

用来设置饼图中普通标签的边框颜色

setLabelLinkPaint(Paint paint)

用来设置饼图中普通标签与圆弧之间连接线的颜色

setSectionPaint(Comparable, Paint)

用来设置饼图中代表指定图例的扇形的填充色

setToolTipGenerator(PieToolTipGenerator generator)

用来设置热点饼图中热区标签的输出样式

setURLGenerator(PieURLGenerator generator)

用来设置热点饼图中热区链接的URL

setIgnoreNullValues(boolean flag)

用来设置是否显示绘图数据设为NULL的图例,默认为显示(false)

setIgnoreZeroValues(boolean flag)

用来设置是否显示绘图数据设为0的图例,默认为显示(false)

PiePlot3D类仅提供了一个用来设置3D饼图Z轴高度的方法setDepthFactor(double factor)。

XYPlot类提供的经常用来订制绘图区绘制属性的方法及其功能请参见表5.7。

表5.7                            XYPlot类提供的常用方法及其功能

名称

功能

setDataset(CategoryDataset dataset)和setDataset(int, CategoryDataset)

均用来设置绘图数据集实例,后者的第一个参数为数据集的唯一标识值,前者是采用默认标识值(0)。如果在一个绘图区中只包含一个分类轴和一个数值轴,建议使用前者;否则,一定要通过后者为每个数据集实例指定一个唯一标识值

setDomainAxis(CategoryAxis axis)

用来设置分类轴实例

setDomainAxisLocation(AxisLocation location)

用来设置分类轴的绘制位置,入口参数常量在org.jfree.chart.axis.AxisLocation类中做了定义

setDomainGridlinesVisible(boolean visible)

用来设置分类轴标记线是否可见,默认为不可见(false)

setDomainGridlineStroke(Stroke stroke)

用来设置分类轴标记线的绘制风格

setDomainGridlinePaint(Paint paint)

用来设置分类轴标记线的颜色

setRangeAxis(ValueAxis axis)

用来设置数据轴实例

setRangeAxisLocation(AxisLocation location)

用来设置数据轴的绘制位置,入口参数常量在org.jfree.chart.axis.AxisLocation类中做了定义

setRangeGridlinesVisible(boolean visible)

用来设置数据轴标记线是否可见,默认为可见(true)

setRangeGridlineStroke(Stroke stroke)

用来设置数据轴标记线的绘制风格

setRangeGridlinePaint(Paint paint)

用来设置数据轴标记线的颜色

mapDatasetToDomainAxis(int, int)

用来将指定标识值的绘图数据集与分类轴建立关联

mapDatasetToRangeAxis(int, int)

用来将指定标识值的绘图数据集与数据轴建立关联

可以通过绘图区实例获得坐标轴实例,然后设置坐标轴的绘制属性;也可以将设置好的坐标轴实例传入到绘图区实例中。常用的坐标轴类及其功能请参见表5.8。

表5.8                            常用的坐标轴类及其功能

名称

功能

CategoryAxis

用来定义分类型坐标轴

ValueAxis

用来定义数值型坐标轴,包括普通的数值型和日期型

NumberAxis

用来定义普通数值型坐标轴

DateAxis

用来定义日期型坐标轴

Axis类是表5.8中介绍的几个类的父类,Axis类提供的经常用来订制绘图区绘制属性的方法及其功能请参见表5.9。

表5.9                            Axis类提供的常用方法及其功能

名称

功能

setLabel(String label)

用来设置坐标轴标题

setLabelFont(Font font)

用来设置坐标轴标题的字体

setLabelPaint(Paint paint

用来设置坐标轴标题的颜色

setLabelAngle(double angle)

用来设置坐标轴标题的旋转角度

setTickLabelFont(Font font)

用来设置坐标轴标尺值的字体

setTickLabelPaint(Paint paint)

用来设置坐标轴标尺值的颜色

setTickMarkStroke(Stroke stroke)

用来设置坐标轴标尺标记的笔触

setTickMarkPaint(Paint paint)

用来设置坐标轴标尺标记的颜色

CategoryAxis类提供的经常用来订制绘图区绘制属性的方法及其功能请参见表5.10。

表5.10                            CategoryAxis类提供的常用方法及其功能

名称

功能

setLowerMargin(double margin)

用来设置分类轴的下边距

setUpperMargin(double margin)

用来设置分类轴的上边距

setCategoryMargin(double margin)

用来设置分类轴之间的间距

setMaxCategoryLabelWidthRatio(float ratio)

用来设置显示分类轴标记内容的最大比例,如果设为1,表示可以显示标记内容的最大长度与绘图所占宽度相同

ValueAxis类是NumberAxis类和DateAxis类的父类,ValueAxis类提供的经常用来订制绘图区绘制属性的方法及其功能请参见表5.11。

表5.11                            ValueAxis类提供的常用方法及其功能

名称

功能

setFixedAutoRange(double length)

用来动态设置数据轴的标尺范围。例如设置入口参数为100,表示数据轴的标尺范围为从(MaxValue-100)到(MaxValue)

setLowerBound(double min)

用来设置数据轴标尺值的最小值

setUpperBound(double max)

用来设置数据轴标尺值的最大值

setVerticalTickLabels(boolean flag)

用来设置日期轴标记值是否垂直显示,默认为水平显示(false)

NumberAxis类提供的经常用来订制绘图区绘制属性的方法及其功能请参见表5.12。

表5.12                            NumberAxis类提供的常用方法及其功能

名称

功能

setNumberFormatOverride(NumberFormat formatter)

用来简单格式化数据轴标尺值的输出样式

setTickUnit(NumberTickUnit unit)

即可以格式化数据轴标尺值的输出样式,又可以设置标尺值之间的间隔

DateAxis类提供的经常用来订制绘图区绘制属性的方法及其功能请参见表5.13。

表5.13                            DateAxis类提供的常用方法及其功能

名称

功能

setDateFormatOverride(DateFormat formatter)

用来简单格式化日期轴标尺值的输出样式

setTickUnit(DateTickUnit unit)

即可以格式化日期轴标尺值的输出样式,又可以设置标尺值之间的间隔

通过上面对JFreeChart常用类及方法的研究,就可以利用JFreeChart插件绘制出漂亮的统计图表了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值