免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JFreeChart与JSP动态图表JFreeChart是一个Java开源项目,它提供了在Java Application、Servlet和JSP下生成各种图片格式的图表,包括柱形图、饼形图、线图、区域图、时序图和多轴图等在web.xml文件中添加如下代码: DisplayChart org.jfree.chart.servlet.DisplayChart DisplayChart /servlet/DisplayChart这样,就可以利用JFreeChart插件生成动态统计图表了。利用JFreeChart插件生成动态统计图表的基本步骤如下: 创建绘图数据集合 创建JFreeChart实例 自定义图表绘制属性,该步可选 生成指定格式的图片,并返回图片名称 组织图片浏览路径 通过HTML中的元素显示图片JFreeChart核心类及其功能类 名功 能JFreeChart图表对象,生成任何类型的图表都要通过该对象,JFreeChart插件提供了一个工厂类ChartFactory,用来创建各种类型的图表对象XXXDataset数据集对象,用来保存绘制图表的数据,不同类型的图表对应着不同类型的数据集对象XXXPlot绘图区对象,如果需要自行定义绘图区的相关绘制属性,需要通过该对象进行设置XXXAxis坐标轴对象,用来定义坐标轴的绘制属性XXXrenderer图片渲染对象,用于渲染和显示图表XXXURLGenerator链接对象,用于生成Web图表中项目的鼠标单击链接XXXToolTipGenerator图表提示对象,用于生成图表提示信息,不同类型的图表对应着不同类型的图表提示对象利用JFreeChart生成柱形图绘图时需要用到的相关信息如下:int width=500;int height=375;String chartTitle=编程类图书年销量柱形图分析;String subtitle=-统计时间:2008年;String xTitle=销售时间:2008年;String yTitle=销售量 单位:万册;String cutline=new StringASP,JSP,PHP;String category=new String第1季度,第2季度,第3季度,第4季度;Double data=new Doublecutline.lengthcategory.length;for(int m=0;mcutline.length;m+)for(int n=0;ncategory.length;n+)datamn=1+Math.random()*100;String servletURI=/servlet/DisplayChart; 利用DefalutCategoryDataset数据集绘制柱形图通过JFreeChart插件,既可以生成普通效果的柱形图,也可以生成3D效果的柱形图。如果想生成普通效果的柱形图,需要通过工厂类ChartFactory的createBarChart()方法获得JFreeChart类的实例;如果想生成3D效果的柱形图,需要通过工厂类ChartFactory的createBarChart3D()方法获得JFreeChart类的实例,这两个方法的入口参数是完全相同的,各个入口参数的类型及功能如表入 口 参 数参 数 功 能String title图表标题String categoryAxisLabel统计种类轴标题,可以理解为X轴标题String valueAxisLabel统计值轴标题,可以理解为Y轴标题CategoryDataset dataset绘图数据集PlotOrientation orientation用于设定柱形图的绘制方向垂直:PlotOrientation.VERTICAL水平:PlotOrientation。HORIZONTALBoolean legend用于设定是否显示图例Boolean tooltips用于设定是否采用标准生成器Boolean urls用于设定是否包生成链接工厂类ChartFactory中的方法返回值均为JFreeChart类的实例,通过返回的JFreeChart类的实例,可以设置绘图属性,也可以省略,直接生成图片,JFreeChart插件将采用默认的绘图属性进行绘制可以通过JFreeChart实例设置整个图片的绘制属性,例如通过setBackgroundPaint(Paint paint)方法设置图片的背景色,入口参数可以是Color类的实例,也可以是GradientPaint类的实例,通过GradientPaint类的实例可以实现渐变的背景色效果还可通过JFreeChart实例的getCategoryPlot()方法获得CategoryPlot类的实例,通过CategoryPlot类的实例可以设置绘图区的绘图属性,例如设置绘图区的背景色,标准线的绘制属性等。通过CategoryPlot实例的getRenderer()方法可以获得BarRenderer类的实例,通过BarRenderer类的实例可设置柱形的绘制属性,如是否绘制柱形的轮廓线,以及柱形的填充色等,通过BarRenderer实例的setSeriesPaint(int series,Paint paint)方法设置柱形的填充色,第一个入口参数为图例的索引位置,从0开始,第二个入口参数为填充色,同样既可接受Color类的实例,也可接受GradientPaint类的实例 利用XYDataset数据集绘制柱形图主要用来绘制与日期相关的统计图。在封装数据集时,首先需要通过TimeSeries类的实例进行封装,TimeSeries类提供了3个构造函数,在这里采用入口参数最多的一个,代码如下:TimeSeries timeSeries=new TimeSeries(chartTitle,xTitle,yTitle,Month.class);入口参数依次为图表标题、日期轴标题、数据轴标题和统计种类,第二个和第三个入口参数可以为空,第四个入口参数的可选类型如下: Year.class:按年统计 Month.class:按月统计 Day.class:按日统计 Hour.class:按小时统计 Minute.class:按分统计 Second.class:按秒统计 Millisecond.class:按毫秒统计 Quarter.class:按一刻钟统计 Week.class:按周统计 FixedMillisecond.class:按指定时间段统计通过TimeSeries实例的add()方法向TimeSeries实例中添加统计数据,添加完成后以TimeSeries实例为入口参数创建一个TimeSeriesCollection类的实例,并将TimeSeriesCollection实例直接传给IntervalXYDataset类的实例,代码如下:TimeSeriesCollection tsc=new TimeSeriesCollection(timeSeries);IntervalXYDataset dataset=tsc;说明:类TimeSeriesCollection和类IntervalXYDataset均为XYDataset接口的实现类在创建JFreeChart类的实例时,需要通过工厂类ChartFactory的createXYBarChart方法利用JFreeChart生成饼形图通过JFreeChart插件,既可以生成普通效果的饼形图,也可以生成3D效果的饼形图。如果想生成普通效果的饼形图,需要通过工厂类ChartFactory的createPieChart()方法获得JFreeChart类的实例;如果想生成3D效果的饼形图,需要通过工厂类ChartFactory的createPieChart3D()方法获得JFreeChart类的实例,这两个方法的入口参数是完全相同的,各个入口参数的类型及功能如表入 口 参 数参 数 功 能String title图表标题PieDataset dataset绘图数据集Boolean legend用于设定是否显示图例Boolean tooltips用于设定是否采用标准生成器Boolean urls用于设定是否包生成链接绘制饼形图时,需要通过DefaultPieDataset数据集封装数据,该数据集中的每一个元素是由一组键值对组成的,这与Map集合有些类似,DefaultPieDataset数据集通过setValue()方法添加数据,setValue()方法有两个重载方法,均为两个入口参数,并且每个参数的含义是相同的,第一个入口参数为图例名称,第二个入口参数统计数据可以通过绘图区对象PiePlot的setForegroundAlpha(float alpha)方法,实现饼图的透明效果,入口参数alpha的取值范围在0.0和1.0之间,当为0.0时,将不显示饼图,当为1.0时,则不存在透明效果,当超出该范围时,将抛出异常:java.lang.IllegalAccessException:alpha value out of range利用JFreeChart生成折线图通过JFreeChart插件,既可以生成普通效果的折线图,也可以生成3D效果的折线图。如果想生成普通效果的折线图,需要通过工厂类ChartFactory的createLineChart()方法获得JFreeChart类的实例;如果想生成3D效果的折线图,需要通过工厂类ChartFactory的createLineChart3D()方法获得JFreeChart类的实例,这两个方法的入口参数是完全相同的,各个入口参数的类型及功能参考可以分别通过绘图区对象CategoryPlot的getDomainAxis()方法和getRangeAxis()方法,获得横轴对象和纵轴对象,通过得到的轴对象可以设置绘制坐标轴的相关属性,常用方法及实现功能如下:设置坐标轴绘制属性的部分通用方法通 用 方 法实 现 功 能setAxisLineStroke(Stroke stroke)设置轴线的粗细setAxisLinePaint(Paint paint)设置轴线的颜色setLabelFont(Font font)设置坐标轴标题的字体setLabelPaint(Paint paint)设置坐标轴标题的颜色纵轴对象还提供了设置坐标最大值的方法setUpperBound(double max),在默认情况下将最大值控制在能够正常绘制统计图的范围内通过java.awt.BasicStroke类可以绘制出各种各样的线段,大体分为实线段和虚线段,可控制的绘制条件包括线条的宽度、线段端点的风格、折线段的折点风格、虚线段的绘制风格和虚线段的绘制偏移量线段端点修饰风格简介常量名称常量值修饰方法BasicStroke.CAP_BUTT0对线段端点不加任何修饰BasicStroke.CAP_ROUND1在线段端点加半圆进行修饰,半圆的直径为线段的宽度BasicStroke.CAP_SQUARE2在线段端点加矩形进行修饰,矩形的宽度为线段宽度的一半,矩形的高度为线段的宽度线段折点修饰风格简介常量名称常量值修饰方法BasicStroke.JOIN_MITER0对线段折点不加任何修饰BasicStroke.JOIN_ROUND1在折线段的两端加半圆进行修饰,半圆的直径为线段的宽度BasicStroke.JOIN_BEVEL2将组成折点的两条线段的外侧长至相交,然后填充被包的区域入口参数dash用来定义虚线,为float型数组,当dash数组由偶数个元素组成时,索引值为偶数的元素值代表虚线段的长度,索引值为奇数的元素值代表两个虚线段之间的空白部分的长度利用JFreeChart生成区域图通过JFreeChart插件只能生成普通效果的区域图,利用工厂类ChartFactory的createXYAreaChart()方法获得JFreeChart类的实例,在封装用来绘制区域图的数据时,既可以利用CategoryDataset数据集,也可利用XYDataset数据集XYDataset数据集主要用来绘制与日期相关的统计图,这种统计图的横轴通常为日期标度,纵轴为数值标度,JFreeChart提供了格式化坐标轴标度的功能;在格式化横轴的日期标度时,可以通过java.text.SimpleDateFormat类格式化日期的输出格式,SimpleDateFormat类继承于java.text.DateFormat类。将日期和时间进行格式化:DateFormat dfA = new SimpleDateFormat(yyyy-MM-dd);/ 年以4位显示DateFormat dfB = new SimpleDateFormat(yy-MM-dd);/ 年以2位显示DateFormat dfC = new SimpleDateFormat(HH:MM:SS);/ 24小时的形式显示DateFormat dfD = new SimpleDateFormat(HH:MM:SS a);/ 12小时的形式显示还可通过org.jfree.chart.axis.DateTickUnit类定义日期标度的单位和间隔,其中一个构造函数的定义如下:DateTickUnit(int unit,int count,DateFormat formatter)参数说明 unit:日期标度的统计单位 count:日期标度的输出间隔 formatter:日期标度的格式化方式在格式化纵轴的数值标度时,可以通过java.text.DecimalFormat类格式化数值的输出格式,如可将数值进行如下格式化:DecimalFormat dfA = new DecimalFormat(0.00);/ 保留小数点后两位DecimalFormat dfB = new DecimalFormat(0%);/ 以百分比的形式输出还可能过org.jfree.chart.axis.NumberTickUnit类定义数值标度的间隔,其中一个构造函数的定义如下:NumberTickUnit(double size,NumberFormat formatter);参数说明 size:数值标度的输出间隔 formatter:日期标度的格式化方式利用JFreeChart生成时序图通过JFreeChart插件只能生成普通效果的时序图,利用工厂类ChartFactory的createTimeSeriesChart()方法获得JFreeChart类的实例,在封装用来绘制时序图的数据时,只能利用XYDataset数据集,而不能利用CategoryDataset数据集时序图与折线图有些类似,不过时序图提供了绘制移动平均线的功能,通过给定的数据集对象,可以自动计算任意时间段的移动平均值移动平均值的计算方法时 间零 售 价2天内的移动平均值3天内的移动平均值值移动平均值的计算方法值移动平均值的计算方法2008-8-64无也可视为4无也可视为42008-8-765(4+6)/2无也可视为52008-887(6+8)/26(4+6+8)/3如果要绘制移动平均线,就要创建一个用来绘制移动平均线的数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 糖果罐头活动方案
- 白垩纪地质公园活动方案
- 白云线下活动方案
- 素养提升活动方案
- 精装公司活动方案
- 纺织厂秋季联展活动方案
- 白象饮品年会活动方案
- 白族幼儿活动方案
- 益阳团建冬季活动方案
- 纳税调研活动方案
- 2025年中国银行招聘笔试参考题库含答案解析
- 内部控制与风险管理(第3版)题库
- 2024-2025华为ICT大赛(实践赛)-网络赛道理论考试题库大全-下(判断题)
- 钢棚钢结构施工方案
- 2023年三峡集团招聘笔试真题
- 110kv输电线路工程施工作业指导书
- (国铁)机车检查保养员(机车整备工)职业技能考试题及答案
- DB34T 1948-2013 建设工程造价咨询档案立卷标准
- 药品不良反应知识培训
- 2024-2025学年七年级语文上册 第二单元 单元测试卷(人教安徽版)
- 《窗口操作掌握牢》参考课件
评论
0/150
提交评论