jfreechart使用教程中文_第1页
jfreechart使用教程中文_第2页
jfreechart使用教程中文_第3页
jfreechart使用教程中文_第4页
jfreechart使用教程中文_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JFreeChartJFreeChart 是开放源代码的免费,但是它的支持文档需要才能得到。其地址为:rou=15494,当前版本为 1.0.6。笔者的是 1.0.6版。说明:1)source 目录:为jfreechart 的源码目录;lib 目录:为包目录,需要关注的包为jfreechart-1.0.6.ja r、gnujaxp.jar 和jcommon-1.0.10.jar 这三个包;根目录下的 jfreechart-1.0.6-demo.jar 是例子程序,大家双击后可看到其中有很多例子的运行结果。环境配置笔者的开发环境如下:一与环境配置用 JFreeChart 增强JSP 报表的用户体

2、验JFreeChart 是一组功能强大、灵活易用的 Java 绘图API,使用它可以生成多种通用性的报表,包括柱状图、饼图、曲线图、图等。它能够用在Swing 和Web 等中制作自定义的图表或报表,并且得到广泛的应用。本文将通过引领读者学JFreeChart 中饼图、柱状图和曲线图的进阶应用,来达到熟练使用JFreeChart 的目的。JDK:1.5MyEclipse:5.1.1 GATomcat:5.5.28为了后续的“用JFreeChart 创建基于Web 的图表”的一个例子的展示,在MyEclipse 中创建一个名为jfreechart 的Web 工程。将的JFreeChart1.0.6

3、 下lib 目录下的jar 包拷贝到WebRoot/WEB-INF/lib 目录下。另外还需要在web.xml 文件中增加如下配置:DisplayChart.jfree.chart.servlet.DisplayChartDisplayChart/DisplayChart二柱状图在WebRoot 目录下建立bar 目录,用来存放柱状图的各个例子。首先在该目录下建立一个sle1.jsp 文件,让来看一个简单的柱状图的例子,修改后的sle1.jsp 的内容如下所示:img src=width=500 height=300 border=0 usemap=#在浏览器中输入地址.jsp,可看到如下柱状

4、图:img src=width=500 height=300 border=0 usemap=#对比该例与前例,可看出createBarChart3D 的倒数第三个参数修改成了true,该参数可用来显示下方的:。上两例显示的只是一个城市类销量,有时候有对比显示多个城市的不同肉类,只要将上例稍作修改即可。例如要在图中表示广州、东莞、佛山四个城市的四个肉类的销售情况,只需要将如下三句稍做修改:double data = newdouble 1310, 720, 1130, 440;String rowKeys = , 牛肉,鸡肉, 鱼肉;String columnKeys = ;例如修改成:dou

5、ble data = newdouble 1310, 1220, 1110,1000,720, 700, 680, 640,1130, 1020, 980, 800,440, 400, 360, 300;String rowKeys = , 牛肉,鸡肉, 鱼肉;String columnKeys = 广州, , 东莞, 佛山;在运行该jsp 页面,可看到如下界面:在上述几例中,在某个柱子上都没有显示相应的数值,下面让为每个柱子都加上它的数值,新建一个sle4.jsp 页面,其内容如下:img src=width=700 height=400 border=0 use在WebRoot 目录下建立

6、名为pie 的子目录,用来存放本中饼图的实例jsp 页面。下面让来看一个简单的三维饼图。首先在pie 目录下建立一个名为sle1.jsp 的页面。在JFreeChart 中,与饼图绘制密切相关的类如下:三饼图map=#运行效果如下所示:注意:jfreechart 的很多版本不兼容,请大家在运行此例时确认了对应的版本。3) ChartFactory可利用该制图工厂类createChart 来创建一个饼图的JFreeCha rt 对象,例如:DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue(品德, new D

7、ouble(0.2D); dataset.setValue(体育, new Double(0.2D); dataset.setValue(音乐, new Double(0.2D);dataset.setValue(其余成绩, new Double(0.4D);2) DefaultPieDataset默认的饼图数据集类,用来饼图显示的相关数据信息。例如:PiePlot pieplot = (PiePlot)jfreechart.getPlot(); pieplot.setLabelFont(new Font(SansSerif, 0, 12); pieplot.setNoDataMessage(

8、No data available); pieplot.setCircular(false); pieplot.setLabelGap(0.02D);饼图绘制类,可以用来设置饼图的相关属性。例如:1) PiePlot下面让看一个简单的例子,修改sle1.jsp 的内容如下:img src=width=500 height=300 border=0 usemap=#可以看出,饼图的绘制与柱状图的绘制类似,该例的运行效果如下:有时候还想知道某块所占的具体分值,或者需要突出显示某一块。这时候需要对上例进行部分修改:dataset.setValue(其他, 0.2);后的那段改成:/通过工厂类生成JF

9、reeChart 对象JFreeChart chart = ChartFactory.createChart3D(IT 行业职业分布图, dataset, true, false, false);PiePlot pieplot = (PiePlot) chart.getPlot();pieplot.setLabelFont(new Font(宋体, 0, 12);/没有数据的时候显示的内容pieplot.setNoDataMessage(无数据显示);pieplot.setCircular(false);setExplodePercent 方法很重要,它将Label 为某名称的某块挖出来突出显

10、示,而后两句实现的效果是在“初中高级程序员”等名称后加上百分比,改成“初中高级程序员=55%”等。加上如上的代码后,同时还需要将相关的两个 java 包:.jfree.chart.labels.S tandardPieSectionLabelGenerator 和java.text.NumberFormat 引入到该jsp 页面中。此时的运行结果如下:通过JFreeChart 还可以提供漂亮的水晶饼图效果,接着让新建一个sle3.jsp 页面来体验一下超炫美图吧。修改 sle3.jsp 页面如下:img src=width=500 height=300 border=0 usemap=#利用s

11、etForegroundAlpha()方法可以设置 3D 饼图的,利用 se tStartAngle()可以设置其开始角度,利用setDirection()方法可以设置其方向。该例的运行效果如下图所示:在下例中,显示的blog 在 2007 年度各月份的量情况,修改后的sle 1.jsp 的内容如下:img src=width=500 height=300 border=0 usemap=#运行后的曲线效果如下图所示:有时需要显示各数据点及其数值,这是需要对上例进行一点改动,在 JFreeChart chart = ChartFactory.createTimeSeriesChart 后,Te

12、xtTitle subtitle =new TextTitle前加上如下的代码:XYPlot plot = (XYPlot) chart.getPlot();XYLineAndShRenderer xylineandshrenderer =(XYLineAndShapeRenderlot.getRenderer();/设置网格背景颜色plot.setBackgroundPa(Color.white);/设置网格竖线颜色plot.setGridlinePa(Color.pink);/设置网格横线颜色plot.setRangeGridlinePa(Color.pink);/设置曲线图与xy 轴的距

13、离plot.setAxisOffset(new RectangleInsets(0D, 0D, 0D, 10D);/设置曲线是否显示数据点xylineandshrenderer.setBaseShsVisible(true);/设置曲线显示各数据点的值XYItemRenderer xyitem = plot.getRenderer();xyitem.setBaseItemLabelsVisible(true);xyitem.setBaseitiveItemLabelition(new ItemLabelition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BA

14、SELINE_LEFT);xyitem.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator();xyitem.setBaseItemLabelFont(new Font(Dialog, 1,14);plot.setRenderer(xyitem);并引入了一些另外的包,引入包的语句变成:运行该实例,效果如下所示:上面两例的曲线图都是单曲线的,有时候对两个曲线进行比较,在 2006 年度和 2007 年度的blog例如对量进行比较,在此种情况下,需要在一个曲线图中显示两个曲线。在此种情况下,只需要在 sle1.jsp 的基础上新建

15、一个TimeSeries 对象,给它添加数据后,将其添加到TimeSeriesCollection 型数据集合对象中,修改后的程序主体部分如下所示:/量统计时间线TimeSeries timeSeries2006 = new TimeSeries(2006 年度, Month.class);TimeSeries timeSeries2007 = new TimeSeries(2007 年度, Month.class);/时间曲线数据集合TimeSeriesCollection lineDataset = newTimeSeriesCollection();/构造数据集合timeSeries20

16、06.add(newMonth(1, 2007),7200);timeSeries2006.add(newMonth(2, 2007),7000);timeSeries2006.add(newMonth(3, 2007),4200);timeSeries2006.add(newMonth(4, 2007),8200);timeSeries2006.add(newMonth(5, 2007),7300);timeSeries2006.add(newMonth(6, 2007),8200);timeSeries2006.add(newMonth(7, 2007),9200);timeSeries2

17、006.add(newMonth(8, 2007),7300);timeSeries2006.add(newMonth(9, 2007),9400);timeSeries2006.add(newMonth(10, 2007),7500);timeSeries2006.add(newMonth(11, 2007),6600);timeSeries2006.add(newMonth(12, 2007),3500);timeSeries2007.add(newMonth(1, 2007), 10200);timeSeries2007.add(newMonth(2, 2007),9000);timeS

18、eries2007.add(newMonth(3, 2007),6200);timeSeries2007.add(newMonth(4, 2007),8200);timeSeries2007.add(newMonth(5, 2007),8200);timeSeries2007.add(newMonth(6, 2007),11200);timeSeries2007.add(newMonth(7, 2007),13200);timeSeries2007.add(newMonth(8, 2007),8300);timeSeries2007.add(newMonth(9, 2007),10400);timeSeries2007.add(newMonth(10, 2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论