JFreeChart使用教程含下载安装.docx
用JFreeChartk加JSP报表的用户体验JFreeChart是一组功能强大、敏捷易用的Java绘图API,运用它可以生成多种通用性的报表,包括柱状图、饼图、曲线图、甘特图等。它能够用在SWing和Web等中制作自定义的图表或报表,并且得到广泛的应用。本文将通过引领读者学习在JFreeChart中饼图、柱状图和曲线图的进阶应用,来达到娴熟运用JFreeChart的目的C一下就与环境IM1 .下栽JFreeChartJFreeChart是开放源代码的免费软件,但是它的支持文档须要付费才能得到。其下毂地址为:,当前最新版本为。笔者下战的是用新版。说明:1)source书目:为jfreechart的源码书目;2) Iib书目:为包书目,我们须要关注的包为、gnujaxp.jar和这三个包;3)根书目卜的是例子程序,大家双击后可看到其中有许多例子的运行结果。2 .环境配置笔者的开发环境如下:JDK:1.5MyEclipse:5.1.1GATomcat:为了后续的“用JFreeChart创建必于Web的图表”的一个例子的展示,我们在MyECIiPSe中创建一个名为jfreechart的Web工程。将卜.栽的下Hb书目下的jar包指贝到WCbROOtWEB-INFlib书目下。另外还须要在Web.xml文件中增加如卜.配置:<se11det><servlet-name>Disp)ayChart<serv)et-name><servlet-class><servlet-class><servlet><se11det-mapping><servlet-name>DisplayChart</SerVIet-name><url-pattern>DisplayChart<url-pattern><servlet-mapping>二柱状图在WebRoot书目下建立bar书目,用来存放柱状图的各个例子。泞先在该书目下建立一个Sample1.jsp文件,让我们来看一个简洁的柱状图的例子,修改后的SamPIe1.jSP的内容如N所示:v%pageContentTyPe="text/html;CharSet=GBK"%>v%pageContentType="text/htmljcharset=GBK"%><%pageimport="org.jfree.chart.ChartFactorjf,org.jfree.chart.JFreeChart,org.jfree.chart.plot.PlotOrientation,org.jfree.chart.Sendet.ServletUtilities,org.jfree.data.category.CategorjfDataset,org.jfree.data.general.DatasetUtilities"%><%:doublel11data-newdouble11<1310,1720,(1130,440; EStringlrowKeys="猪肉牛肉”,“鸡肉","鱼肉";CFStringIlColumnKeys="";CategoryDatasetdataset=DatasetUtilities-CreateCategoryDataset(rowKeys,columnKcys,data);JFreeChartchart=ChartFaCtOry.createBarChart3D("广州肉类销量统计图","肉类",”销GT,dataset,PlotOrientation.VERTICA1.,true,false,不同肉类,只要将上例稍作修改即可。例如要在图中表示广州、深圳、东荒、佛山四个城市的四个肉类的借售状况,只须要将如卜三句梢做修改:double11data»newdouble11«1310,720,11130f1440» EStringfrowKeys=“猪肉",”牛肉T鸡肉","鱼肉';StringQColumnKeys«f例如修改成:double1111data=newdouble11l1310,1220,1110,1000,720,700,680,640),1130,1020,980,800),1440,400,360,300); EStringdrowKeys7猪肉","牛肉T鸡肉","鱼肉";StringdCOlumnKeys="广州","深圳","东莞","佛山小在运行该iSD值面.可看到如下界面:肉类一垃统计图在上述儿例中,在某个柱子上都没有显示相应的数值,下面让我们为每个柱子都加上它的数值,我们新建一个SamPIe4.jsp页面,其内容如下:<%pageCOntentTyPe="text/html;CharSet=GBK"%><%pageimporta.category.CategoryDataset,org.jfree.data.general.DatasetUtilities,org.jfree.chart.plot.*,org.jfree.chart.labels.*,org.jfree.chart.renderer.category.BarRenderer3D,java.awt.*,org.jfree.ui.*,org.jfree.chart.axis.Axis1.ocation"%><%7double11data=newdouble11«1310,1220,1110,1000,i720,700,680,640,iU130,1020,980,800,44O,400,360,300; EStringOrowKeys="猪肉"牛肉*"鸡肉","鱼肉"; EString11ColumnKeys="广州","深圳"J冻莞","佛山";CategoryDatasetdataset=DatasetUtilities-CreateCategoryDataset(rowKeys,ColumnKeys,data);JFreeChartchart=ChartFaCtory.createBarChart3D("肉类储出统计图",“肉类",“销量",dataset,PlotOrientation-VERTICA1.,true,true,false);CategoryPlotplot=chart.getCategoryPlot();/设置网格背景颜色plot.SetBackgroundPaint(ColorAvhite);/设置网格签线颜色plot.SetDomainGridlincPaint(Color-Pink);设置网格横线颜色plot.SetRangeGridlinePaint(Color-Pink);/显示每个柱的数值,并修改该数值的字体属性BarRendercr3Drenderer=newBarRcndererSDO;renderer.setBaseItem1.abelGenerator(newStandardCategoryItem1.abelGenerator();renderer.setBaseltem1.abelsVisible(true);/默认的数字显示在柱子中,通过如下两句可调整数字的显示留意:此句很关键,若无此句,那数字的显示会被覆盖,给人数字没行显示出来的问题renderer.setBasePositiveItem1.abelPosition(newItem1.abelPosition(Itcm1.abclAnchor.OUTSIDE12,TextAnchor.BASE1.INE,1.EFT);renderer.setItem1.abelAnchorOffset(lOD);/设置每个地区所包含的平行柱的之间距离/renderer.SetItemMargin(0.3);plot.setRenderer(rendercr);/设置地区、销成的显示位置/将下方的“肉类”放到上方plot.setDomainAxislx)cation(Axis1.ocation.TOP_OR_RIGHT);/将默认放在左边的“销盘”放到右方plot.setRangeAxis1.ocation(Axis1.ocation.BOTTOM_OR_RIGHT);String=ServletUtilities.saveChartAsPNG(chart,700,400,nul1,session);StringgraphUR1.=request.getContextPath()+,/DisplayChart?"+;%><imgsrc="<%=graphUR1.%>"width=700hcight=400border=0usemap="#<%»%>">运行效果如下所示:肉类箱依统计图nu东凌>留意:jfreechart的许多版本不兼容,请大家在运行此例时确认下毂了对应的版本。三.饼图在WebRoot书目卜.建立名为pie的子书目,用来存放本教程中饼图的实例jsp页面。下面让我们来看一个简洁的二维饼图。首先在PiC书目下建立一个名为sample1.jsp的页面。在JFreeChart中,与饼图绘制亲密相关的类如下:1) PiePlot饼图绘制类,可以用来设置饼图的相关属性.例如:PicPlotpieplot=(PicPlot)jfreechart.getPlot();pieplot.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("体育",newDouble(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的内容如下:<%pagecontentType="texthtmljcharset=GBK"%>v%pageimport="org.jfree.chart.*,org.jfree.chart.plot.PiePlotforg.jfree.data.general.DefaultPieDataset,org.jfree.cha