Jfreechart功能介绍
JFreeChart它主要是用来制作各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。
它可以通过数据生成相应的报表
我们可以从官方网站上获取最新版本和相关资料(但是jfree的Developer Guides是需要花美金才能获取),
获取地址:http://www.jfree.org/jfreechart/index.html(同时可以获得简明介绍)
JFreeChart目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求,主要包
括如下几个方面:
pie charts (2D and 3D):饼图(平面和立体)
bar charts (regular and stacked, with an optional 3D effect):柱状图
line and area charts:曲线图
time series, high/low/open/close charts and candle stick charts:时序图
combination charts:复合图
Gantt charts:甘特图
(态图表,饼图(二维和三维) , 柱状图 (水平,垂直),线图,点图,时间变化图,甘特图, 股票行情图,混和图, 温度计图, 刻度图等常用商用图表)
图形可以导出成PNG和JPEG格式,同时还可以与PDF和EXCEL关联
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:用于生成图象的帮助提示,不同类型图表对应不同类型的工具提示类
数据集对象:
CategoryDataset:
String[] rowKeys = { "One", "Two", "Three" };
String[] colKeys = { "1987", "1997", "2007" };
double[][] data = { { 50, 20, 30 }, { 20, 10D, 40D },
{ 40, 30.0008D, 38.24D }, };
CategoryDataset cd = DatasetUtilities.createCategoryDataset(rowKeys, colKeys, data);
CategoryDataset对象 数据用于(Bar-柱状图) (Area-区域图) (Line-小折线图)
rowKeys:横坐标点标识,1维数组,可设多个,如果数目太多图片显示不开则取平均值,(如:点标识为:1,2,3,4,5,图片如果显示不开则显示1,3,5)将图片分辨率设大一些可以解决此问题。
colKeys:竖坐标点标识,同上。
date:数据。其中{ 50, 20, 30 }为一条数据,如果是小折线图则是一条线,data里有三条线。支持double型数据
PieDataset:
DefaultPieDataset defaultpiedataset = new DefaultPieDataset();
defaultpiedataset.setValue("One", new Double(37.800000000003D));
defaultpiedataset.setValue("Two", new Double(20.002D));
defaultpiedataset.setValue("Three", new Double(17.504D));
defaultpiedataset.setValue("Four", new Double(47D));
PieDataset对象, 数据用于 (Pie-饼状图)
第一个参数为饼状图其中一个区域的标识
第二个参数为饼状图其中一个区域所占的大小,支持double型数据
Defaultpiedataset里共有4个区域
XYDataset:
// 用于生成第一条折线
XYSeries xyseries1 = new XYSeries("One");
xyseries1.add(1, 22420);
xyseries1.add(2, 2312134.2320);
xyseries1.add(3, 0);
// 用于生成第二条折线,以此类推
XYSeries xyseries2 = new XYSeries("Two");
for (int i = 0; i <= 19; i++) {
int x = i + 1;
xyseries2.add(x, i * 10);
}
XYSeriesCollection xySeriesCollection = new XYSeriesCollection();
将两条线加入到坐标折线图中
xySeriesCollection.addSeries(xyseries1);
xySeriesCollection.addSeries(xyseries2);
XYDataset对象,数据用于(XYLine-XY坐标折线图)
XYSeries xyseries1 = new XYSeries("One")为其中一条折线“one”为这条线的标识
xyseries1.add(1, 22420);第一个参数为横坐标点标识。第二个参数为数据,也是竖坐标点标识,它会根据数据的最大值和最小值设置竖坐标点的最大值和最小值。可设多个折点。
创建报表
Area(区域图):
JFreeChart jfreechart = ChartFactory.createAreaChart(“AreaPicName”, // 标题
“XLineName”, // categoryAxisLabel (category轴,横轴,X轴标签)
“YLineName”, // valueAxisLabel(value轴,纵轴,Y轴的标签)
categoryDataset, // dataset数据模型
PlotOrientation.VERTICAL, true, // legend
false, // tooltips
false); // URLs
// 以下的设置可以由用户定制,也可以省略
CategoryPlot plot = (CategoryPlot) jfreechart.getPlot();
plot.setBackgroundAlpha(0.5f);
plot.setForegroundAlpha(0.5f);
将以创建好的数据模型放到参数里
Bar (柱状图):
JFreeChart jfreechart = ChartFactory.createBarChart(“BarPicName”, // 标题
“XLineName”, // categoryAxisLabel (category轴,横轴,X轴的标签)
“YLineName”, // valueAxisLabel(value轴,纵轴,Y轴的标签)
categoryDataset, // dataset数据模型
PlotOrientation.VERTICAL, true, // legend
false, // tooltips
false); // URLs
// 以下的设置可以由用户定制,也可以省略
CategoryPlot plot = (CategoryPlot) jfreechart.getPlot();
plot.setBackgroundAlpha(0.5f);
plot.setForegroundAlpha(0.5f);
// 其他设置 参考 CategoryPlot类
将以创建好的数据模型放到参数里
Line (小折线图):
// 创建JFreeChart对象:ChartFactory.createLineChart
JFreeChart jfreechart = ChartFactory.createLineChart(“LinePicName”, // 标题
“XLineName”, // categoryAxisLabel (category轴,横轴,X轴标签)
“YLineName”, // valueAxisLabel(value轴,纵轴,Y轴的标签)
categoryDataset, // dataset数据模型
PlotOrientation.VERTICAL, true, // legend
false, // tooltips
false); // URLs
// 以下的设置可以由用户定制,也可以省略
CategoryPlot plot = (CategoryPlot) jfreechart.getPlot();
plot.setBackgroundAlpha(0.5f);
plot.setForegroundAlpha(0.5f);
// 其他设置 参考 CategoryPlot类
将以创建好的数据模型放到参数里
XYLine (XY坐标折线图):
// 创建JFreeChart对象:ChartFactory.createXYLineChart
JFreeChart jfreechart = ChartFactory.createXYLineChart(“XYLinePicName”, // 标题
“XLineName”, // categoryAxisLabel (category轴,横轴,X轴标签)
“YLineName”, // valueAxisLabel(value轴,纵轴,Y轴的标签)
dataset, // dataset数据模型
PlotOrientation.VERTICAL, true, // legend
false, // tooltips
false); // URLs
// 以下的设置可以由用户定制,也可以省略
XYPlot plot = (XYPlot) jfreechart.getPlot();
plot.setBackgroundAlpha(0.5f);
plot.setForegroundAlpha(0.5f);
// 其他设置 参考 CategoryPlot类
将以创建好的数据模型放到参数里
Pic (饼状图):
JFreeChart jfreechart = ChartFactory.createPieChart(“PicName”, 标题
pieDataset, // dataset数据模型
true, // legend
false, // tooltips
false); // URLs
// 以下的设置可以由用户定制,也可以省略
PiePlot pieplot = (PiePlot) jfreechart.getPlot();
pieplot.setBackgroundAlpha(0.5f);
pieplot.setForegroundAlpha(0.5f);
// 其他设置 参考 CategoryPlot类
将以创建好的数据模型放到参数里
将图片存储到本地:
FileOutputStream out = new FileOutputStream(“C:/abc”);图片输出路径</s