您好,欢迎访问三七文档
JSP动态图表JFreeChart是一个Java开源项目,是一款优秀的Java图表生成插件,它提供了在JavaApplication、Servlet和JSP下生成各种图片格式的图表,包括柱形图、饼形图、线图、区域图、时序图和多轴图等。1JFreeChart的下载与使用在JFreeChart的官方网站()上可以下载到该插件,该插件有两个版本:jfreechart-1.0.13.zip,该版本适用于Windows系统;jfreechart-1.0.13.tar.gz,该版本适用于UNIX/Linux系统。解压缩jfreechart-1.0.13.zip后将得到一个名为jfreechart-1.0.13的文件夹,只需将lib子文件夹内的jfreechart-1.0.13.jar和jcommon-1.0.16.jar两个文件拷贝到Web应用程序的WEB-INF下的lib文件夹内,并且在该Web应用程序的web.xml文件中,/web-app前面添加代码。servletservlet-nameDisplayChart/servlet-nameservlet-classorg.jfree.chart.servlet.DisplayChart/servlet-class/servletservlet-mappingservlet-nameDisplayChart/servlet-nameurl-pattern/servlet/DisplayChart/url-pattern/servlet-mapping利用JFreeChart组件生成动态统计图表的基本步骤如下所示:第一步,创建绘图数据集合;第二步,创建JFreeChart实例;第三步,自定义图表绘制属性,该步可选;第四步,生成指定格式的图片,并返回图片名称;第五步,组织图片浏览路径;第六步,通过HTML中的img标记显示图片。2JFreeChart的核心类在使用JFreeChart组件之前,首先应该了解该组件的核心类及其功能。JFreeChart核心类如表8-1所示。表8-1JFreeChart核心类名称解释JFreeChart图表对象,生成任何类型的图表都要通过该对象,JFreeChart插件提供了一个工厂类ChartFactory,用来创建各种类型的图表对象。XXXDataset数据集对象,用来保存绘制图表的数据,不同类型的图表对应着不同类型的数据集对象。XXXPlot绘图区对象,如果需要自行定义绘图区的相关绘制属性,需要通过该对象进行设置。XXXAxis坐标轴对象,用来定义坐标轴的绘制属性。XXXRenderer图片渲染对象,用于渲染和显示图表。XXXURLGenerator链接对象,用于生成Web图表中项目的鼠标单击链接。XXXToolTipGenerator图表提示对象,用于生成图表提示信息,不同类型的图表对应着不同类型的图表提示对象。表中给出的各对象的关系如下:JFreeChart中的图表对象用JFreeChart对象表示,图表对象由Title(标题或子标题)、Plot(图表的绘制结构)、BackGround(图表背景)、toolstip(图表提示条)等几个主要的对象组成。其中Plot对象又包括了Render(图表的绘制单元——绘图域)、Dataset(图表数据源)、domainAxis(x轴)、rangeAxis(y轴)等一系列对象组成,而Axis(轴)是由更细小的刻度、标签、间距、刻度单位等一系列对象组成。3利用JFreeChart生成动态图表通过JFreeChart插件可以生成多种动态图表,包括柱形图、饼形图、折线图、区域图、时序图、多轴图和组合图等七种图表。本节将利用JFreeChart插件生成的柱形图进行详细讲解。1.利用JFreeChart生成柱形图通过JFreeChart插件,既可以生成普通效果的柱形图,也可以生成3D效果的柱形图。如果想生成普通效果的柱形图,需要通过工厂类ChartFactory的createBarChart()方法获得JFreeChart类的实例;如果想生成3D效果的柱形图,需要通过工厂类ChartFactory的createBarChart3D()方法获得JFreeChart类的实例,这两个方法的入口参数是完全相同的,各个入口参数的类型及功能如表8-2所示。表8-2绘制柱形图方法的入口参数名称解释Stringtitle图表标题。StringcategoryAxisLabel统计种类轴标题,可以理解为X轴标题。StringvalueAxisLabel统计值轴标题,可以理解为Y轴标题。CategoryDatasetdataset绘图数据集。PlotOrientationorientation用于设定柱形图的绘制方向垂直:PlotOrientation.VERTICAL水平:PlotOrientation.HORIZONTALbooleanlegend用于设定是否显示图例。booleantooltips用于设定是否采用标准生成器。booleanurls用于设定是否包生成链接。工厂类ChartFactory中的方法的返回值均为JFreeChart类的实例,通过返回的JFreeChart类的实例,可以设置绘图属性,也可以省略该步,直接生成图片,JFreeChart插件将采用默认的绘图属性进行绘制。可以通过JFreeChart实例设置整个图片的绘制属性,例如通过setBackgroundPaint(Paintpaint)方法设置图片的背景色,入口参数可以是Color类的实例,也可以是GradientPaint类的实例,通过GradientPaint类的实例可以实现渐变的背景色效果。还可以通过JFreeChart实例的getCategoryPlot()方法获得CategoryPlot类的实例,通过CategoryPlot类的实例可以设置绘图区的绘图属性,例如设置绘图区的背景色,标准线的绘制属性等。通过CategoryPlot实例的getRenderer()方法可以获得BarRenderer类的实例,通过BarRenderer类的实例可以设置柱形的绘制属性,例如是否绘制柱形的轮廓线,以及柱形的填充色等,通过BarRenderer实例的setSeriesPaint(intseries,Paintpaint)方法设置柱形的填充色,第一个入口参数为图例的索引位置,从0开始,第二个入口参数为填充色,同样既可以接受Color类的实例,也可以接受GradientPaint类的实例。下面是一个利用JFreeChart生成3D效果的柱形图实例,代码如下所示。文件名:JFreeChartHBar3D.jsp%@pagelanguage=javaimport=java.util.*,java.awt.*pageEncoding=UTF-8%%@pageimport=org.jfree.chart.ChartFactory%%@pageimport=org.jfree.chart.JFreeChart%%@pageimport=org.jfree.chart.plot.*,org.jfree.chart.labels.*%%@pageimport=org.jfree.data.category.DefaultCategoryDataset%%@pageimport=org.jfree.chart.servlet.ServletUtilities%%@pageimport=org.jfree.chart.ChartRenderingInfo%%@pageimport=org.jfree.chart.entity.StandardEntityCollection%%@pageimport=org.jfree.chart.title.TextTitle,org.jfree.chart.axis.AxisLocation%%@pageimport=org.jfree.data.category.CategoryDataset,org.jfree.chart.renderer.category.BarRenderer3D%%@pageimport=org.jfree.data.general.DatasetUtilities,java.awt.*,org.jfree.ui.*,org.jfree.chart.axis.*%%//创建一个600X500的图像intwidth=600,height=500;StringbookTitle[]={数学,语文,英语,物理,化学};Stringcategory[]={第1周,第2周,第3周,第4周};//创建数据集DefaultCategoryDatasetdataset=newDefaultCategoryDataset();//往数据集中添加绘制图表所需的数据intbookSales;for(inti=0;ibookTitle.length;i++){for(intj=0;jcategory.length;j++){bookSales=1+(int)(Math.random()*100);dataset.addValue(bookSales,bookTitle[i],category[j]);}}//创建3D图表JFreeChartchart=ChartFactory.createBarChart3D(,//图表标题时间:2010年上学期,//坐标标题成绩,//坐标标题dataset,//定义绘制数据PlotOrientation.VERTICAL,//直方图的方向true,//定义图表是否包含图例true,//定义图表是否包含提示false//定义图表是否包含URL);CategoryPlotplot=chart.getCategoryPlot();NumberAxisnumberaxis=(NumberAxis)plot.getRangeAxis();CategoryAxisdomainAxis=plot.getDomainAxis();//X轴坐标上的文字:domainAxis.setTickLabelFont(newFont(sans-serif,Font.PLAIN,11));//X轴坐标标题domainAxis.setLabelFont(newFont(宋体,Font.PLAIN,12));//Y轴坐标上的文字:numberaxis.setTickLabelFont(newFont(sans-serif,Font.PLAIN,12));//Y轴坐标标题numberaxis.setLabelFont(newFont(黑体,Font.PLAIN,12));//图表底部(语文等文字)chart.getLegend().setItemFont(newFont(宋体,Font.PLAIN,12));//设置网格背景颜色plot.setBackgroundPaint(Color.white);//设置网格竖线颜色plot.setDomainGridlinePaint(Color.pink);//设置网格横线颜色plot.setRangeGridlinePaint(Color.pink);//显示每个柱的数值,并修改该数值的字体属性BarRenderer3Drenderer=newBarRenderer3D();renderer.setBaseItemLabelGenerator(newStandardCategoryItemLabelGenerator());renderer.setBaseItemLabelsVisible(true);renderer.setBasePositiveItemLabelPosition(newItemL
本文标题:JSP动态图表
链接地址:https://www.777doc.com/doc-4479837 .html