《JFreeChart使用教程含下载安装.docx》由会员分享,可在线阅读,更多相关《JFreeChart使用教程含下载安装.docx(23页珍藏版)》请在课桌文档上搜索。
1、用JFreeChartk加JSP报表的用户体验JFreeChart是一组功能强大、敏捷易用的Java绘图API,运用它可以生成多种通用性的报表,包括柱状图、饼图、曲线图、甘特图等。它能够用在SWing和Web等中制作自定义的图表或报表,并且得到广泛的应用。本文将通过引领读者学习在JFreeChart中饼图、柱状图和曲线图的进阶应用,来达到娴熟运用JFreeChart的目的C一下就与环境IM1 .下栽JFreeChartJFreeChart是开放源代码的免费软件,但是它的支持文档须要付费才能得到。其下毂地址为:,当前最新版本为。笔者下战的是用新版。说明:1)source书目:为jfreechar
2、t的源码书目;2) Iib书目:为包书目,我们须要关注的包为、gnujaxp.jar和这三个包;3)根书目卜的是例子程序,大家双击后可看到其中有许多例子的运行结果。2 .环境配置笔者的开发环境如下:JDK:1.5MyEclipse:5.1.1GATomcat:为了后续的“用JFreeChart创建必于Web的图表”的一个例子的展示,我们在MyECIiPSe中创建一个名为jfreechart的Web工程。将卜.栽的下Hb书目下的jar包指贝到WCbROOtWEB-INFlib书目下。另外还须要在Web.xml文件中增加如卜.配置:Disp)ayChartDisplayChartDisplayCh
3、art二柱状图在WebRoot书目下建立bar书目,用来存放柱状图的各个例子。泞先在该书目下建立一个Sample1.jsp文件,让我们来看一个简洁的柱状图的例子,修改后的SamPIe1.jSP的内容如N所示:v%pageContentTyPe=text/html;CharSet=GBK%v%pageContentType=text/htmljcharset=GBK%:doublel11data-newdouble111310,1720,(1130,440; EStringlrowKeys=猪肉牛肉”,“鸡肉,鱼肉;CFStringIlColumnKeys=;CategoryDatasetdat
4、aset=DatasetUtilities-CreateCategoryDataset(rowKeys,columnKcys,data);JFreeChartchart=ChartFaCtOry.createBarChart3D(广州肉类销量统计图,肉类,”销GT,dataset,PlotOrientation.VERTICA1.,true,false,不同肉类,只要将上例稍作修改即可。例如要在图中表示广州、深圳、东荒、佛山四个城市的四个肉类的借售状况,只须要将如卜三句梢做修改:double11datanewdouble111310,720,11130f1440; EStringfrowKey
5、s=“猪肉,”牛肉T鸡肉,鱼肉;StringQColumnKeysf例如修改成:double1111data=newdouble11l1310,1220,1110,1000,720,700,680,640),1130,1020,980,800),1440,400,360,300); EStringdrowKeys7猪肉,牛肉T鸡肉,鱼肉;StringdCOlumnKeys=广州,深圳,东莞,佛山小在运行该iSD值面.可看到如下界面:肉类一垃统计图在上述儿例中,在某个柱子上都没有显示相应的数值,下面让我们为每个柱子都加上它的数值,我们新建一个SamPIe4.jsp页面,其内容如下:imgsrc=
6、width=700hcight=400border=0usemap=#运行效果如下所示:肉类箱依统计图nu东凌留意:jfreechart的许多版本不兼容,请大家在运行此例时确认下毂了对应的版本。三.饼图在WebRoot书目卜.建立名为pie的子书目,用来存放本教程中饼图的实例jsp页面。下面让我们来看一个简洁的二维饼图。首先在PiC书目下建立一个名为sample1.jsp的页面。在JFreeChart中,与饼图绘制亲密相关的类如下:1) PiePlot饼图绘制类,可以用来设置饼图的相关属性.例如:PicPlotpieplot=(PicPlot)jfreechart.getPlot();piep
7、lot.set1.abelFont(newFontCSansSerif,0,12);pieplot.SetNoDataMcssageCNodataavailable);pieplot.setCircular(false);picplot.set1.abelGap(0.02D);2) DefaultPicDataset默认的饼图数据集类,用来存储饼图显示的相关数据信息。例如:DefaultPieDatasetdataset=newDefaultPieDatasetO;dataset.setValue(11t1,newDouble(0.2D);dataset.setValue(体育,newDoub
8、le(0.2D);dataset.setVahe(音乐,newDouble(0.2D);dataset.setValue(其余成果,newDouble(0.4D);3) ChartFactory可利用该制图工厂类CreatePieChart来创建一个饼图的JFrCeChart对象,例如:JFreeChartjfreechart=ChartFactory.CreatePieChartCtJf图示例,dataset,true,true,false);下面让我们看一个简洁的例子,修改SamPIe1.jsp的内容如下:v%pageimport=org.jfree.chart.*,org.jfree.c
9、hart.plot.PiePlotforg.jfree.data.general.DefaultPieDataset,org.jfree.chart.Servlet.ServletUtilities,java.awt.*%imgsrc=,width=500height=300border=OUSemaP=#可以看出,饼图的绘制与柱状图的绘制类似,该例的运行效果如下:IT行业职业分布图有时候我们还想知道某块所占的详细分值,或者须要突出显示某一块。这时候须要对上例进行部分修改:datasetsetValue(其他”,0.2);后的那段改成:/通过工厂类生成JFreeChart对象JFreeChar
10、tchart=ChartFactory.createPieChart3D(IT行业职业分布图”,dataset,true,false,false);PiePlotpieplot三(PiePlot)chart.getPlotQ;pieplot.set1.abelFont(ncwFOntr宋体,,12);/没有数据的时候显示的内容org.jfree.chart.plot.PicPlot3D%imgsrc=width=500hcight=300border=0usemap=#利用SetForegroUndAIPhao方法可以设置3D饼图的透亮度,利用SetStartAnglc()可以设置其起先角度,
11、利用SetDirCCtiOnO方法可以设置其方向。该例的运行效果如5图所示:IT行业职业分布黑PJ,l,WFttJllrt,系统分析师枇件饮构UtK他四.曲线图接着我们来介绍曲线图的运用。在笔者日常的开发工作中,曲线图用得最多,它可以用来绘制趋势图、统计分析等。首先我们在WebRoot下建立一个IinC书目,用来存放曲线图实例的jsp页面。我们在该书目下建立SamPle1.jSP页面来做一个简洁的曲线图的例子。在起先编码前,让我们来看看与画曲线图亲密相关的几个类:1) TimeseriesCollection曲线数据的集合。2) TimeSeries曲线信息序列。3) ChartFactory
12、可以利用该类的CreateTimeSeriesChart方法来创建曲线的JFreeChart对象C在下例中,我们显示阿蜜果的blog在2007年度各月份的访问讨状况,修改后的samplel.jsp的内容如F:v%pagecontentType三texthtmljcharset=GBK%v%pageimport=org.jfree.chart.ChartFactory,OrgjfreexhartJFreeChart,org.jfree.chart.Sendet.ServlctUtilities,org.jfree.chart.title.TcxtTitle,org.jfree.data.time
13、.TimeSeries,e.Month,org.jfree.data.time.TimeSeriesCollection,java.awt.Font%imgsrc=,width=500height=300border=0USemaP=#,1运行后的曲线效果如星期委藐”计有时我们须要显示各数据点与其数值,这是我们须要对上例进行一点改动,在JFreeChartchart=ChartFactory.CreateTimeSeriesChart后,TextTitlesubtitle=newTextTitle前加上如下的代码:XYPlotplot=(XYPlot)chart.getPlot();XY1.i
14、neAndShapeRendererXylineandshaperenderer=(XY1.ineAndShapeRenderer)plot.getRenderer();/设置网格背景颜色plot.SetBackgroundPaint(ColorAvhite);/设置网格整线颜色plot.SetDomainGridlinePaint(Color,Pink);/设置网格横线颜色plot.SetRangeGridlinePaintIColor.pink);/设置曲线图与Xy轴的距离plot.setAxisOffset(newRectangleInsets(OD,0D,0D,10D);设置曲线姑否显
15、示数据点Xylineandshapcrcnderer.sctBaseShapcsVisible(truc);设置曲线显示各数据点的值XYItcmRendererxyitem=plot.getRendcrer();xyitem.setBaseltem1.abelsVisible(true);xyitem.sctBascPositiveItem1.abelPosition(newItem1.abclPosition(Item1.abelAnchor-OUTSIDE12,TextAnchor-BASE1.INE-1.EFT);xyitem.setBascItcm1.abelGenerator(new
16、StandardXYItem1.abelGenerator();xyitem.sctBascItem1.abclFont(newFont(Dialog,1,14);plot.setRenderer(xyitem);并引入了一些另外的包,引入包的语句变成:v%pageimport三org.jfree.chart.ChartFactory,xtTitle,org.jfree.data.time.TimeSeries,org.jfree.data.time.Month,org.jfree.data.time.TimeSeriesCollection,org.jfree.chart.plot.XYPl
17、ot,org.jfree.chart.renderer.xy.XY1.ineAndShapeRenderer,java.awt.Color,Orgjfree,Ui-RectangleInsets,java.awt.Font,org.jfree.chart.renderer.xy.XYItemRendererforg.jfree.chart.JFrccChart,org.jfree.chart.Servlet.ServletUtilities,org.jfree.chart.labels.*,org.jfree.ui.*%运行该实例,效果如卜.所示:闻blog访问,Jtt计2007ft13.20
18、0.M12,20012.4(2.500111200i277.l-27l-27t.,l-2007J-2007/l-27-S-HiiKKbIogiAH-上面两例的曲线图都是单曲线的,有时候我们对两个曲线进行比较,例如对阿蜜果在2006年度和2007年度的blog访问量进行比较,在此种状况下,我们须要在个曲线图中显示两个曲线。在此种状况下,我们只须要在SamPIe1.jSP的基础上新建一个TimeSeries对象,给它添加数据后,将其添加到TimeSerieSCOneCtion型数据集合对象中,修改后的程序主体部分如下所示:/访问量统计时间线TimeSeriestimeSeries2006=newT
19、imeSeries(2006年度,Month.class);TimeSeriestimeSeries2007=newTimeSeries(2007年度,Month.class);/时间曲线数据集合TimeseriesCollectionIineDataset=newTimeSeriesCo11ection();/构造数据集合timcSerics2006.add(newMonth(l,2007),7200);timeSeries2006.add(newMonth(2,2007),7000);timeSerics2006.add(newMonth(3,2007),4200);timeSeries2
20、006.add(newMonth(4f2007),8200);timcScries2006.add(newMonth(5,2007),7300);timeSeries2006.add(newMonth(6,2007),8200);timcSeries2006.add(newMonth(7,2007),9200);timeSeries2006.add(newMonth(8,2007),7300);timeSeries2006.add(newMonth(9,2007),9400);timeSeries2006.add(newMonth(10,2007),7500);timeSeries2006.a
21、dd(newMonth(l1,2007),6600);timeSeries2006.add(newMonth(12,2007),3500);timcSerics2007.add(newMonth(l,2007),10200);timeSeries2007.add(newMonth(2,2007),9000);timeSeries2007.add(newMonth(3,2007),6200);timcSeries2007.add(newMonth(4,2007),8200);timeSeries2007.add(newMOnth2007),8200);timcSeries2007.add(new
22、Month(6,2007),11200);timeSeries2007.add(newMonth(7,2007),13200);timeSeries2007.add(newMonth(8f2007),8300);timeSeries2007.add(newMonth(9,2007),10400);timeSeries2007.add(newMonth(10,2007),12500);timeSeries2007.add(newMonth(11,2007),10600);timeSeries2007.add(newMonth(12,2007),10500);IineDataset.addSeri
23、es(timeSeries2006);IincDataset.addSeries(timeSeries2007);JFreeChartchart=ChartFaCtory.CreateTimeSeriesChartC访问址统计时间线月份,访问量,IineDataset,true,true,true);设置子标题TextTitlesubtitle=newTextTitle(,2006/2007年度访WJ敢为j比,newFont(黑体,Font.BO1.D,12);chart.addSubtitle(subtitle);/设置主标题Chart.setTitlc(ncwTextTitle11呵蜜果blog访问量:统计,newFont(隶书,Font.ITA1.IC,15);chart.setAntiAlias(true);该例的运行效果如M用卷票blog访内女计2006/20074度访问量对比20062007:r/五.-总结本文通过详尽的实例讲解并描述了如何利用JFreeChart开发常用的柱状图、饼图和曲线图。从这些实例中可以看出,JFrCeChart是我们开发图表或报表的志向选择,它筒洁易用,并且简洁理解,是我们开发的利刃。