关于前端图表开发有很多基于Flash,HTML5,JavaScript的开源组件,而Java开源图表组件JFreeChart也是众所周知,网上关于JFreeChart的资料非常之多,可见其在Java开发中应用的相当广泛。
写这篇文章一是为了记录一下关于JFreeChart的学习过程,另外想记录下学习这个组件方法。
1.了解JFreechart
http://baike.baidu.com/link?url=HLkuq4ZBZg8Wlti3pRpwii5NcJNj7m9WFmT5kmzwzjjCma-oLLYCV9rl-UAjQmdn
2. 下载JFreeChart 和补充说明
http://www.jfree.org/jfreechart/
说明:按照作者的意思是JFreeChart是开源的,但是文档是需要购买,宗旨是支持开发者。
3.JFreechart 为我们提供了一个jfreechart-1.0.15-demo.jar 实例程序级,在这里我们这里全面的了解JFreeChart能够支持实现的图表类型。
在没有文档的帮助下,上面的实例图将是我们了解JFreeChart的直接路径,正如百度百科说的那样截至2011年JFreeChart是Java方面最佳的图表解决方案,其历史悠久,也为我们提供了更多的资料可供学习。
4.入门
历史的意义格外重要,JFreechart的中文博文也是特别多,用来参考,进行学习,然后循序渐进的了解各式各样的图表类型。
例如下面代码就是一个简单的生成饼图:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
public class PieChart {
public static JFreeChart getChart() {
// 准备数据
DefaultPieDataset dataSet = getPieDateSet();
// 创建图表,并对图表对象进行属性设置
JFreeChart chart = ChartFactory.createPieChart( "浏览器市场占有率" , dataSet,
true , false , false );
Font font = new Font( "黑体" , Font.PLAIN, 12 );
chart.getTitle().setFont(font);
try {
chart.setBackgroundImage(ImageIO.read( new File(
"D:\\__dir\\chart\\bg.jpg" )));
chart.setBorderVisible( true );
} catch (IOException e1) {
e1.printStackTrace();
}
// 绘图,对图形进行属性设置
PiePlot plot = (PiePlot) chart.getPlot();
plot.setNoDataMessage( "No Data" );
plot.setCircular( true );
plot.setForegroundAlpha( 0 .5F);
plot.setLabelGap( 0.01 );
plot.setExplodePercent( "FireFox" , 0.24 );
plot.setBackgroundAlpha( 0 .00F);
/**
* {0}:label
*
* {2}:{1,2}
*
* {1}:value {2}:format
*
*/
plot.setLabelGenerator( new StandardPieSectionLabelGenerator( "{0}:{2}" ,
NumberFormat.getInstance(), new DecimalFormat( "0.00%" )));
//以图片文件的形式输出
FileOutputStream fos = null ;
try {
fos = new FileOutputStream( new File(
"D:\\__dir\\chart\\piechart_precent.png" ));
ChartUtilities.writeChartAsPNG(fos, chart, 400 , 400 );
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return chart;
}
private static DefaultPieDataset getPieDateSet() {
DefaultPieDataset dataSet = new DefaultPieDataset();
dataSet.setValue( "IE" , 0.35 );
dataSet.setValue( "FireFox" , 0.24 );
dataSet.setValue( "Chrome" , 0.26 );
dataSet.setValue( "Opera" , 0.05 );
dataSet.setValue( "Other" , 0.10 );
return dataSet;
}
} |
上面绘制饼图的效果如下(注:下图数据仅供测试用例,不具备实际意义):
从上面的代码中可以看出生成一个图表的基本流程:
准备数据==》创建图表类型对象==》绘制图标==》渲染图表==》显示图表
关于渲染图表上面代码并没有特别清楚的体现,其实在绘制图表对象中可以获得一个渲染对象,然后进行图表渲染。
显示图表的方式有多种,一般是基于Swing,Applet,Image的形式。
总结:
在日常工作中随时都有可能遇到不熟悉的东西,但又时间紧迫,这个时候就得掌握快速学习,快速应用的方法。
图表组件开源的很多,不同的实现方式,不同的应用场景,能否找到适合自己的,并且能够投入生产并不是一件容易的事情,这里面牵扯一个商业问题,商业领域性,业务性很强,很开源的组件往往这方面有欠缺,这时候就是另外的考虑范畴了。。
关于JFreeChart的学习虽说没有免费的文档,但是站在广大的网友奉献的基础上还是容易学习的,而关于寻找资源就要靠搜商了。
本文转自 secondriver 51CTO博客,原文链接:http://blog.51cto.com/aiilive/1367224,如需转载请自行联系原作者