核心类主要有:
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: 用于生成图象的帮助提示,不同类型图表对应不同类型的工具提示类
表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。