<%@ page contentType="text/html; charset=gb2312"%> JFreeChart综合应用
网站公告:   ◆北天JAVA技术网热情为java爱好者服务,本网内容包括JAVA(JSP、servlet、EJB、webservice、j2ee、javabean、应用服务器、JavaScript),数据库(MYSQL、SQL Server、Sybase、Oracle、DB2、数据库综合知识),设计研究(设计模式、Struts、Spring、Hibernate、设计框架、设计综合知识),WEB2.0新技术(主要介绍AJAX),以及各种技术的入门、实例、例子等等,欢迎各位多来坐坐!◆  诚邀各位JAVA爱好者加盟!◆  本网站内容丰富,更新快,保证每周20篇以上!  
加入收藏
设为首页
联系站长
承接项目
  相关资源:网站首页 | 免费培训学院 | 技术论坛 | JAVA聊天室 | 作家专栏 | 开发工具 | 认证考试 | 会员俱乐部
  JAVA技术初学者园地 | jsp与servlet | javascript | Java源代码 | EJB | web service | 应用服务器 | JAVA综合知识
  设计研究设计模式 | 设计框架 | Struts | Spring | Hibernate | 开源项目 | 面向对象设计 | 设计综合知识
  数 据 库MYSQL | SQL Server | Sybase | Oracle | DB2 | Informix | Access | 数据库综合知识
  其他资源:AJAX新技术 | 网站开发 | ERP软件 | OA办公软件 | 商业智能BI | 开发综合知识 | 承接项目 | 项目试用

 
 
JFreeChart综合应用
     发布者: 发布时间:2008-03-11

JFreeChart是一个开源JAVA项目,它主要用来开发各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。在这些不同式样的图表上可以满足目前商业系统的要求。JFreeChart是一种基于JAVA语言的图表开发技术。JFreeChart可用于ServletJSPAppletJava Appication环境中,通过JDBC可动态显示任何数据库数据,结合Itext可以输出至PDF文件。

JFreeChart主要是由三个类构成:

Aorg.jfree.chart.servlet.ChartDeleter继承自HttpSessionBindingListener,用于实现当Session关闭时,删除临时目中的图象文件。

Borg.jfree.chart.servlet.DisplayChart继承自Httpservlet用于处理显示图象。

Corg.jfree.chart.servlet.ServletUtilities有一系列方法,例如,saveChartAs*;saveChartAs*是把图表按照不同的形式存储为图象;sendTempFile方法被重载了很多次,用于把文件流发送response

下面以柱状图和饼图为例,介绍图形创建方法。

1 柱状图

org.jfree.chart.ChartFactory这个工厂类有createBarChartcreateStackedBarChartcreateBarChart3DcreateStackedBarChart3D,这几个工厂方法创建不同类型的柱状图,比较重要的是PlotOrientation.VERTICAL让平行柱垂直显示,而PlotOrientation.HORIZONTAL则让平行柱水平显示。对柱状图影响较大的几个类包括:org.jfree.chart.axis.CategoryAxisorg.jfree.chart.axis.ValueAxisorg.jfree.chart.renderer.BarRendererorg.jfree.chart.renderer. BarRenderer3D

具体实现步骤:

1)创建用于图形生成所要的数据集对象。

CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data)

其中:rowKeys表示X轴数据,columnKeys表示Y轴数据,data表示填充柱状图所要的实际数据(来自于数据库)。

2)创建图形对象。

JFreeChart chart = ChartFactory.createBarChart3D("标题", nullnulldatasetPlotOrientation.VERTICAL,truefalsefalse)

 

createBarChart3D方法是ChartFactory工厂类里的一个方法,用于3D柱状图的生成,该类继承自JFreeChart。其中的八个参数分别代表:图形的标题、X轴标题、Y轴标题、dataset就是CategoryDataset类的实例对象、显示标题、启用热键、启用超键接。

3)设置图形显示的属性。

a ) ValueAxis类,设置柱到图上下边的距离。实现方法是:

ValueAxis rangeAxis = plot.getRangeAxis();

设置最高的一个柱与图片顶端的距离:

rangeAxis.setUpperMargin(0.15)

设置最低的一个柱与图片底端的距离:

rangeAxis.setLowerMargin(0.15)

borg.jfree.chart.renderer.BarRenderer3D类,设置图形上显示的数值。实现方法如下:

BarRenderer3D renderer = new BarRenderer3D();

renderer.setBaseOutlinePaint(Color.BLACK);

设置Wall的颜色:

renderer.setWallPaint(Color.gray);

设置每个柱的颜色:

renderer.setSeriesPaint(0, new Color(0, 0, 255));

renderer.setSeriesPaint(1, new Color(0, 100, 255));

renderer.setSeriesPaint(2, Color.GREEN);

设置每个柱的Outline颜色
renderer.setSeriesOutlinePaint(0, Color.BLACK);

renderer.setSeriesOutlinePaint(1, Color.BLACK);

renderer.setSeriesOutlinePaint(2, Color.BLACK);

设置每个地区所包含的平行柱之间的距离
renderer.setItemMargin(0.1);

显示每个柱的数值,并修改该数值的字体属性

renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());

renderer.setItemLabelFont(new Font("黑体",Font.PLAIN,12));

renderer.setItemLabelsVisible(true);

为图形加入超连接

renderer.setItemURLGenerator(new StandardCategoryURLGenerator());

renderer.setToolTipGenerator(new StandardCategoryToolTipGenerator());

2 饼图

org.jfree.chart.plot包,包含创建饼形图的所有方法和属性。

笔者根据业务需求创建了setURLGenerator(PieURLGenerator generator)方法,在图片上建立连接,就是图片不同部分连接不同的资源。

setSectionLabelType(int type)方法:

指定section标签的类型,共有7种类型。如果不指定,默认是NAME_LABELS,其中类型分别是:

PiePlot.NO_LABELS

PiePlot.NAME_LABELS

PiePlot.VALUE_LABELS

PiePlot.PERCENT_LABELSPiePlot.NAME_AND_VALUE_LABELSPiePlot. NAME_AND_PERCENT_LABELSPiePlot.VALUE_AND_PERCENT_LABELS

setDefaultOutlinePaint(java.awt.Paint paint)方法,指定section轮廓线的颜色,如果不指定,默认值为NULL

setDefaultOutlineStroke(java.awt.Stroke stroke)方法,指定section轮廓线的厚度。

setRadius(double percent)setExplodePercent(int section, double percent)方法,抽离section,就是把某一section从饼形图剥离出来,需要两个方法一起使用。

setStartAngle(double angle)方法,设置第一个section开始位置,默认从12点钟方向开始。

setPaint(int section, java.awt.Paint paint)方法指定section的颜色。

setDirection(int direction)方法指定section顺序,默认是顺时针方向。顺时针:PiePlot.CLOCKWISE;逆时针:PiePlot.ANTICLOCKWISE

具体实现步骤:

1)创建用于图形生成所要的数据集对象。

首先实例化类DefaultPieDataset dataset = new DefaultPieDataset()。然后利用DefaultPieDataset类提供的setValuevalue1,value2)方法,把从数据库里提取的数据存入DefaultPieDataset对象。其中value1是数据名称、value2是数据值。

2)创建图形对象。

首先实例化JFreeChart chart = ChartFactory.createPieChart3D(title, dataset, true, true, false)createPieChart3D方法是用于饼图生成的主要方法。其中title代表图形的标题、dataset就是DefaultPieDataset对象的实例。

3)设置图形显示的属性。

String filename = ServletUtilities.saveChartAsPNG(jFreeChart, 700, 450, info, session);

ChartUtilities.writeImageMap(pw, filename, info);

pw.flush()

saveChartAsPNG方法在ServletUtilities工厂类定义完成。主要用于把图形对象JFreeC以图片的形式保存。

其中的jFreeChart就是JFreeChart对象的实例。该方法返回一个文件名。

writeImageMappw, filename, info)方法用于把保存的图片文件以字节流的形式写入用户界面。

其中pwjava.io包的PrintWriter类的实例对象,该对象创建一个图形输出流。Filename是输出图片的文件名。该文件名来自ServletUtilities.saveChartAsPNG方法创建。

参数info用于图形信息的显示。

ChartRenderingInfo info=new ChartRenderingInfo(new StandardEntityCollection())创建。

最后输出完成图形,调用pw.flush()方法关闭IO流。


TAG:
JFreeChart



(转载文章请保留出处:北天JAVA技术网(www.java114.com))
 
更多精彩文章:
解决ajax 提交中文后的乱码问题
Java和JSP编程应该注意的六个常见问题
基础:Java初学者都必须理解的六大问题
学习java的心得体会
J2EE综合—Struts常见错误的全面汇总
Netbeans6.1 Beta: 启动速度提升40%
 
最近评论:
        
鍥炲
        
标 题:   
内 容:   
 
                                  
 
免责声明:该文章由网友发表,如果对您造成侵权,请联系站长

首页 - 承接项目 - 网站地图 - 联系我们 -
版权所有北天JAVA技术工作室 ICP证号:粤ICP备06079815号