JFreeChart调用技术文档(JSP页面实现折线图)
JSP动态图表

JSP动态图表JFreeChart是一个Java开源项目,是一款优秀的Java图表生成插件,它提供了在Java Application、Servlet和JSP下生成各种图片格式的图表,包括柱形图、饼形图、线图、区域图、时序图和多轴图等。
1 JFreeChart的下载与使用在JFreeChart的官方网站(/jfreechart/index.html)上可以下载到该插件,该插件有两个版本:●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文件2 JFreeChart的核心类在使用JFreeChart组件之前,首先应该了解该组件的核心类及其功能。
JFreeChart核心类如表8-1所示。
表8-1 JFreeChart核心类表中给出的各对象的关系如下:JFreeChart中的图表对象用JFreeChart对象表示,图表对象由Title(标题或子标题)、Plot(图表的绘制结构)、BackGround(图表背景)、toolstip(图表提示条)等几个主要的对象组成。
其中Plot对象又包括了Render(图表的绘制单元——绘图域)、Dataset(图表数据源)、domainAxis(x轴)、rangeAxis(y轴)等一系列对象组成,而Axis(轴)是由更细小的刻度、标签、间距、刻度单位等一系列对象组成。
3 利用JFreeChart生成动态图表通过JFreeChart插件可以生成多种动态图表,包括柱形图、饼形图、折线图、区域图、时序图、多轴图和组合图等七种图表。
利用JFreeChart在JSP中制作图表

利用JFreeChart在JSP中制作图表
张玉叶;马春清
【期刊名称】《计算机时代》
【年(卷),期】2013(000)004
【摘要】图表的应用不但可以使数据的显示更加清晰、直观,而且可大大增强Web页面的功能和显示效果.针对目前实际应用中经常需要通过数据库中的数据生成相应的图表这一强大需求,介绍了JFreeChart中通过其提供的数据集合对象在JSP页面中生成图表的方法,并给出了生成饼图和柱状图的具体方法和代码.
【总页数】4页(P34-36,39)
【作者】张玉叶;马春清
【作者单位】济南职业学院计算机系,山东济南250014;济南信息工程学校
【正文语种】中文
【中图分类】TP311.1
【相关文献】
1.JFreeChart在JSP开发中的应用心得 [J], 刘艳霞
2.利用JfreeChart开发包绘制图表 [J], 王征强
3.JFreeChart图表制作技术研究及应用 [J], 周唯;夏自谦;陈梅生;郑雪松
4.JFreeChart图表制作技术研究及应用 [J], 周唯;夏自谦;陈梅生;郑雪松
5.在Web中利用JFreeChart和Cewolf实现气象图表快速绘制的技巧 [J], 周笑天;褚希
因版权原因,仅展示原文概要,查看原文内容请购买。
JFreeChart_图表条目标签

所有的系列显示条目标签
方法renderer.setBaseItemLabelsVisible(false) 是控制着条目标签的显示。对于 CategoryItemRenderer:
同样对于:XYItemRenderer
一旦设置,这个标志优先管理在所有地方对每一 系列做的设置,主要为了应用每一系列的设置。 可以设置个标志为null
2
图表条目标签
简介 显示条目标签 条目标签外观 条目标签位置 定制条目标签文本 实例1 实例2
3
简介
概述 局限性
4
概述
对于大多数的图表类型来说,JFreeChart 允许在 图表的每个条目上、或者内部、或者附近显示条 目标签。例如,下图 在每个条形图上显示出了真 实的值。
5
该方法可以返回任意字符串,因此格式化这个字符 串。如果不想显示标签,可以设置为 null。
45
图表条目标签
简介 显示条目标签 条目标签外观 条目标签位置 定制条目标签文本 实例1 实例2
46
实例1
概述 源代码
47
概述
在第一个实例中,目的就是当当条目的值大于某个 限定的值时,就显示该标签。如图所示。
49
实例1
概述 源代码
50
源代码
51
图表条目标签
简介 显示条目标签 条目标签外观 条目标签位置 定制条目标签文本 实例1 实例2
52
实例2
概述 源代码
53
概述
在本实例中,目的是在每个系列的标签上显示出值 和百分比值(这个百分比值,这个系列在某一部分 的条形直方图或全部条形直方图的总值中的比值)。 如下图所示。
法会出错。
26
条目标签外观
Jfreechart开发文档

Jfreechart图形开发指南廊坊市大华夏神农信息技术有限公司2010年05月修订历史记录目录目录1.引言 (3)2.JFREECHART开发 (3)2.1绘制曲线图 (3)2.2绘制柱状图 (5)2.3绘制三维柱状图 (6)2.4绘制平面饼状图 (7)2.5绘制3D饼状图 (8)2.6绘制时序图 (9)2.7绘制甘特图 (11)3.依赖的JAR包 (13)1.引言JFreeChart是JAVA平台上的一个开放的图表绘制类库。
它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。
JFreeChart可生成饼图(pie chart s)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(G antt charts)等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF和EX CEL关联。
JFreeChart目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求。
2.jfreechart开发2.1绘制曲线图工具类< LineChart >示例代码:图样:2.2绘制柱状图工具类<BarChart>示例代码:图样:2.3绘制三维柱状图工具类<BarChart>示例代码:图样:2.4绘制平面饼状图工具类<PieChart>示例代码:图样:2.5绘制3D饼状图工具类<PieChart3D>示例代码:图样:2.6绘制时序图工具类< TimeSeriesChart> 示例代码:图样:2.7绘制甘特图工具类< TimeSeriesChart> 示例代码:图样:3.依赖的jar包。
JFreechart中文文档

JFreeChart中文文档需导入jar 文件JFreeChart类:void setAntiAlias(boolean flag) 字体模糊边界void setBackgroundImage(Image image) 背景图片void setBackgroundImageAlignment(int alignment) 背景图片对齐方式(参数常量在org.jfree.ui.Align类中定义)void setBackgroundImageAlpha(float alpha) 背景图片透明度(0.0~1.0)void setBackgroundPaint(Paint paint) 背景色void setBorderPaint(Paint paint) 边界线条颜色void setBorderStroke(Stroke stroke) 边界线条笔触void setBorderVisible(boolean visible) 边界线条是否可见-----------------------------------------------------------------------------------------------------------TextTitle类:void setFont(Font font) 标题字体void setPaint(Paint paint) 标题字体颜色void setText(String text) 标题内容-----------------------------------------------------------------------------------------------------------StandardLegend(Legend)类:void setBackgroundPaint(Paint paint) 图示背景色void setTitle(String title) 图示标题内容void setTitleFont(Font font) 图示标题字体void setBoundingBoxArcWidth(int arcWidth) 图示边界圆角宽void setBoundingBoxArcHeight(int arcHeight) 图示边界圆角高void setOutlinePaint(Paint paint) 图示边界线条颜色void setOutlineStroke(Stroke stroke) 图示边界线条笔触void setDisplaySeriesLines(boolean flag) 图示项是否显示横线(折线图有效)void setDisplaySeriesShapes(boolean flag) 图示项是否显示形状(折线图有效)void setItemFont(Font font) 图示项字体void setItemPaint(Paint paint) 图示项字体颜色void setAnchor(int anchor) 图示在图表中的显示位置(参数常量在Legend类中定义)-----------------------------------------------------------------------------------------------------------Axis类:void setVisible(boolean flag) 坐标轴是否可见void setAxisLinePaint(Paint paint) 坐标轴线条颜色(3D轴无效)void setAxisLineStroke(Stroke stroke) 坐标轴线条笔触(3D轴无效)void setAxisLineVisible(boolean visible) 坐标轴线条是否可见(3D轴无效)void setFixedDimension(double dimension) (用于复合表中对多坐标轴的设置)void setLabel(String label) 坐标轴标题void setLabelFont(Font font) 坐标轴标题字体void setLabelPaint(Paint paint) 坐标轴标题颜色void setLabelAngle(double angle)` 坐标轴标题旋转角度(纵坐标可以旋转)void setTickLabelFont(Font font) 坐标轴标尺值字体void setTickLabelPaint(Paint paint) 坐标轴标尺值颜色void setTickLabelsVisible(boolean flag) 坐标轴标尺值是否显示void setTickMarkPaint(Paint paint) 坐标轴标尺颜色void setTickMarkStroke(Stroke stroke) 坐标轴标尺笔触void setTickMarksVisible(boolean flag) 坐标轴标尺是否显示ValueAxis(Axis)类:void setAutoRange(boolean auto) 自动设置数据轴数据范围void setAutoRangeMinimumSize(double size) 自动设置数据轴数据范围时数据范围的最小跨度void setAutoTickUnitSelection(boolean flag) 数据轴的数据标签是否自动确定(默认为true)void setFixedAutoRange(double length) 数据轴固定数据范围(设置100的话就是显示MAXVALUE到MAXVALUE-100那段数据范围)void setInverted(boolean flag) 数据轴是否反向(默认为false)void setLowerMargin(double margin) 数据轴下(左)边距void setUpperMargin(double margin) 数据轴上(右)边距void setLowerBound(double min) 数据轴上的显示最小值void setUpperBound(double max) 数据轴上的显示最大值void setPositiveArrowVisible(boolean visible) 是否显示正向箭头(3D轴无效)void setNegativeArrowVisible(boolean visible) 是否显示反向箭头(3D轴无效)void setVerticalTickLabels(boolean flag) 数据轴数据标签是否旋转到垂直void setStandardTickUnits(TickUnitSource source) 数据轴的数据标签(可以只显示整数标签,需要将AutoTickUnitSelection设false)NumberAxis(ValueAxis)类:void setAutoRangeIncludesZero(boolean flag) 是否强制在自动选择的数据范围中包含0void setAutoRangeStickyZero(boolean flag) 是否强制在整个数据轴中包含0,即使0不在数据范围中void setNumberFormatOverride(NumberFormat formatter) 数据轴数据标签的显示格式void setTickUnit(NumberTickUnit unit) 数据轴的数据标签(需要将AutoTickUnitSelection设false)DateAxis(ValueAxis)类:void setMaximumDate(Date maximumDate) 日期轴上的最小日期void setMinimumDate(Date minimumDate) 日期轴上的最大日期void setRange(Date lower,Date upper) 日期轴范围void setDateFormatOverride(DateFormat formatter) 日期轴日期标签的显示格式void setTickUnit(DateTickUnit unit) 日期轴的日期标签(需要将AutoTickUnitSelection设false)void setTickMarkPosition(DateTickMarkPosition position) 日期标签位置(参数常量在org.jfree.chart.axis.DateTickMarkPosition类中定义)CategoryAxis(Axis)类:void setCategoryMargin(double margin) 分类轴边距void setLowerMargin(double margin) 分类轴下(左)边距void setUpperMargin(double margin) 分类轴上(右)边距void setVerticalCategoryLabels(boolean flag) 分类轴标题是否旋转到垂直void setMaxCategoryLabelWidthRatio(float ratio) 分类轴分类标签的最大宽度-----------------------------------------------------------------------------------------------------------Plot类:void setBackgroundImage(Image image) 数据区的背景图片void setBackgroundImageAlignment(int alignment) 数据区的背景图片对齐方式(参数常量在org.jfree.ui.Align类中定义)void setBackgroundPaint(Paint paint) 数据区的背景图片背景色void setBackgroundAlpha(float alpha) 数据区的背景透明度(0.0~1.0)void setForegroundAlpha(float alpha) 数据区的前景透明度(0.0~1.0)void setDataAreaRatio(double ratio) 数据区占整个图表区的百分比void setOutLinePaint(Paint paint) 数据区的边界线条颜色void setOutLineStroke(Stroke stroke) 数据区的边界线条笔触void setNoDataMessage(String message) 没有数据时显示的消息void setNoDataMessageFont(Font font) 没有数据时显示的消息字体void setNoDataMessagePaint(Paint paint) 没有数据时显示的消息颜色===========进行简单的直方图表外观的修改============== CategoryPlot(Plot)类:void setDataset(CategoryDataset dataset) 数据区的2维数据表void setColumnRenderingOrder(SortOrder order) 数据分类的排序方式void setAxisOffset(Spacer offset) 坐标轴到数据区的间距void setOrientation(PlotOrientation orientation) 数据区的方向(PlotOrientation.HORIZONTAL或PlotOrientation.VERTICAL)void setDomainAxis(CategoryAxis axis) 数据区的分类轴void setDomainAxisLocation(AxisLocation location) 分类轴的位置(参数常量在org.jfree.chart.axis.AxisLocation类中定义)void setDomainGridlinesVisible(boolean visible) 分类轴网格是否可见void setDomainGridlinePaint(Paint paint) 分类轴网格线条颜色void setDomainGridlineStroke(Stroke stroke) 分类轴网格线条笔触void setRangeAxis(ValueAxis axis) 数据区的数据轴void setRangeAxisLocation(AxisLocation location) 数据轴的位置(参数常量在org.jfree.chart.axis.AxisLocation类中定义)void setRangeGridlinesVisible(boolean visible) 数据轴网格是否可见void setRangeGridlinePaint(Paint paint) //水平轴网格线条颜色void setRangeGridlineStroke(Stroke stroke) 数据轴网格线条笔触==void setRenderer(CategoryItemRenderer renderer) 数据区的表示者(详见Renderer组)==BarRenderer(AbstractCategoryItemRenderer)类:void setSeriesPaint(int index,Color color);void setDrawBarOutline(boolean draw) // 是否画图形边框void setItemMargin(double percent) //每个BAR之间的间隔void setMaxBarWidth(double percent) //每个BAR的最大宽度void setMinimumBarLength(double min) 最短的BAR长度,避免数值太小而显示不出void setPositiveItemLabelPositionFallback(ItemLabelPosition position) 无法在BAR中显示的正数标签位置void setNegativeItemLabelPositionFallback(ItemLabelPosition position) 无法在BAR中显示的负数标签位置==void addAnnotation(CategoryAnnotation annotation) 给数据区加一个注释void addRangeMarker(Marker marker,Layer layer) 给数据区加一个数值范围区域void setBackgroundPaint(Color.white);//设置图表的区域背景色PiePlot(Plot)类:void setDataset(PieDataset dataset) 数据区的1维数据表void setIgnoreNullValues(boolean flag) 忽略无值的分类void setCircular(boolean flag) 饼图是否一定是正圆void setStartAngle(double angle) 饼图的初始角度void setDirection(Rotation direction) 饼图的旋转方向void setExplodePercent(int section,double percent) 抽取的那块(1维数据表的分类下标)以及抽取出来的距离(0.0~1.0),3D饼图无效void setLabelBackgroundPaint(Paint paint) 分类标签的底色void setLabelFont(Font font) 分类标签的字体void setLabelPaint(Paint paint) 分类标签的字体颜色void setLabelLinkMargin(double margin) 分类标签与图的连接线边距void setLabelLinkPaint(Paint paint) 分类标签与图的连接线颜色void setLabelLinkStroke(Stroke stroke) 分类标签与图的连接线笔触void setLabelOutlinePaint(Paint paint) 分类标签边框颜色void setLabelOutlineStroke(Paint paint) 分类标签边框笔触void setLabelShadowPaint(Paint paint) 分类标签阴影颜色void setMaximumLabelWidth(double width) 分类标签的最大长度(0.0~1.0)void setPieIndex(int index) 饼图的索引(复合饼图中用到)void setSectionOutlinePaint(int section,Paint paint) 指定分类饼的边框颜色void setSectionOutlineStroke(int section,Stroke stroke) 指定分类饼的边框笔触void setSectionPaint(int section,Paint paint) 指定分类饼的颜色void setShadowPaint(Paint paint) 饼图的阴影颜色void setShadowXOffset(double offset) 饼图的阴影相对图的水平偏移void setShadowYOffset(double offset) 饼图的阴影相对图的垂直偏移void setLabelGenerator(PieSectionLabelGenerator generator) 分类标签的格式,设置成null则整个标签包括连接线都不显示void setToolTipGenerator(PieToolTipGenerator generator) MAP中鼠标移上的显示格式void setURLGenerator(PieURLGenerator generator) MAP中钻取链接格式PiePlot3D(PiePlot)类:void setDepthFactor(double factor) 3D饼图的Z轴高度(0.0~1.0)MultiplePiePlot(Plot)类:void setLimit(double limit) 每个饼图之间的数据关联(详细比较复杂)void setPieChart(JFreeChart pieChart) 每个饼图的显示方式(见JFreeChart类个PiePlot类)-----------------------------------------------------------------------------------------------------------AbstractRenderer类:void setItemLabelAnchorOffset(double offset) 数据标签的与数据点的偏移void setItemLabelsVisible(boolean visible) 数据标签是否可见void setItemLabelFont(Font font) 数据标签的字体void setItemLabelPaint(Paint paint) 数据标签的字体颜色void setItemLabelPosition(ItemLabelPosition position) 数据标签位置void setPositiveItemLabelPosition(ItemLabelPosition position) 正数标签位置void setNegativeItemLabelPosition(ItemLabelPosition position) 负数标签位置void setOutLinePaint(Paint paint) 图形边框的线条颜色void setOutLineStroke(Stroke stroke) 图形边框的线条笔触void setPaint(Paint paint) 所有分类图形的颜色void setShape(Shape shape) 所有分类图形的形状(如折线图的点)void setStroke(Stroke stroke) 所有分类图形的笔触(如折线图的线)void setSeriesItemLabelsVisible(int series,boolean visible) 指定分类的数据标签是否可见void setSeriesItemLabelFont(int series,Font font) 指定分类的数据标签的字体void setSeriesItemLabelPaint(int series,Paint paint) 指定分类的数据标签的字体颜色void setSeriesItemLabelPosition(int series,ItemLabelPosition position) 数据标签位置void setSeriesPositiveItemLabelPosition(int series,ItemLabelPosition position) 正数标签位置void setSeriesNegativeItemLabelPosition(int series,ItemLabelPosition position) 负数标签位置void setSeriesOutLinePaint(int series,Paint paint) 指定分类的图形边框的线条颜色void setSeriesOutLineStroke(int series,Stroke stroke) 指定分类的图形边框的线条笔触void setSeriesPaint(int series,Paint paint) 指定分类图形的颜色void setSeriesShape(int series,Shape shape) 指定分类图形的形状(如折线图的点)void setSeriesStroke(int series,Stroke stroke) 指定分类图形的笔触(如折线图的线)AbstractCategoryItemRenderer(AbstractRenderer)类:void setLabelGenerator(CategoryLabelGenerator generator) 数据标签的格式void setToolTipGenerator(CategoryToolTipGenerator generator) MAP中鼠标移上的显示格式void setItemURLGenerator(CategoryURLGenerator generator) MAP中钻取链接格式void setSeriesLabelGenerator(int series,CategoryLabelGenerator generator) 指定分类的数据标签的格式void setSeriesToolTipGenerator(int series,CategoryToolTipGenerator generator) 指定分类的MAP中鼠标移上的显示格式void setSeriesItemURLGenerator(int series,CategoryURLGenerator generator) 指定分类的MAP中钻取链接格式BarRenderer(AbstractCategoryItemRenderer)类:void setDrawBarOutline(boolean draw) 是否画图形边框void setItemMargin(double percent) 每个BAR之间的间隔void setMaxBarWidth(double percent) 每个BAR的最大宽度void setMinimumBarLength(double min) 最短的BAR长度,避免数值太小而显示不出void setPositiveItemLabelPositionFallback(ItemLabelPosition position) 无法在BAR中显示的正数标签位置void setNegativeItemLabelPositionFallback(ItemLabelPosition position) 无法在BAR中显示的负数标签位置BarRenderer3D(BarRenderer)类:void setWallPaint(Paint paint) 3D坐标轴的墙体颜色StackedBarRenderer(BarRenderer)类:没有特殊的设置StackedBarRenderer3D(BarRenderer3D)类:没有特殊的设置GroupedStackedBarRenderer(StackedBarRenderer)类:void setSeriesToGroupMap(KeyToGroupMap map) 将分类自由的映射成若干个组(KeyToGroupMap.mapKeyToGroup(series,group))LayeredBarRenderer(BarRenderer)类:void setSeriesBarWidth(int series,double width) 设定每个分类的宽度(注意设置不要使某分类被覆盖)WaterfallBarRenderer(BarRenderer)类:void setFirstBarPaint(Paint paint) 第一个柱图的颜色void setLastBarPaint(Paint paint) 最后一个柱图的颜色void setPositiveBarPaint(Paint paint) 正值柱图的颜色void setNegativeBarPaint(Paint paint) 负值柱图的颜色IntervalBarRenderer(BarRenderer)类:需要传IntervalCategoryDataset作为数据源GanttBarRenderer(IntervalBarRenderer)类:void setCompletePaint(Paint paint) 完成进度颜色void setIncompletePaint(Paint paint) 未完成进度颜色void setStartPercent(double percent) 设置进度条在整条中的起始位置(0.0~1.0)void setEndPercent(double percent) 设置进度条在整条中的结束位置(0.0~1.0)StatisticBarRenderer(BarRenderer)类:需要传StatisticCategoryDataset作为数据源LineAndShapeRenderer(AbstractCategoryItemRenderer)类:void setDrawLines(boolean draw) 是否折线的数据点之间用线连void setDrawShapes(boolean draw) 是否折线的数据点根据分类使用不同的形状void setShapesFilled(boolean filled) 所有分类是否填充数据点图形void setSeriesShapesFilled(int series,boolean filled) 指定分类是否填充数据点图形void setUseFillPaintForShapeOutline(boolean use) 指定是否填充数据点的Paint 也被用于画数据点形状的边框LevelRenderer(AbstractCategoryItemRenderer)类:void setItemMargin(double percent) 每个分类之间的间隔void setMaxItemWidth(double percent) 每个分类的最大宽度CategoryStepRenderer(AbstractCategoryItemRenderer)类:void setStagger(boolean shouldStagger) 不同分类的图是否交错MinMaxCategoryRenderer(AbstractCategoryItemRenderer)类:void setDrawLines(boolean drawLines) 是否在每个分类线间画连接线void setGroupPaint(Paint groupPaint) 一组图形连接线的颜色void setGroupStroke(Stroke groupStroke) 一组图形连接线的笔触void setMaxIcon(Icon maxIcon) 最大值的ICONvoid setMinIcon(Icon minIcon) 最小值的ICONvoid setObjectIcon(Icon objectIcon) 所有值的ICONAreaRender(AbstractCategoryItemRenderer)类:没有特殊的设置StackedAreaRender(AreaRender)类:没有特殊的设置。
JFreeChart使用流程

JFreeChart使用流程JFreeChart,开放源代码的Java图表生成组件,可以创建饼图、曲线图、柱状图、甘特图,生成PNG、JPG等图片格式文件。
一.安装配置我们以版本0.9.20为例,下载jfreechart-0 .9.20.zip解压缩文件,jfreechart-0.9.20目录下的jfreechart-0.9.20.jar和lib/jcommon-0.9.5.jar,都是开发运行需要的文件,把这三个文件放置到应用的lib目录下。
然后在web.xml文件中增加以下内容:安装配置完成,现在可以写程序生成我们需要的图表了。
二.后台画图流程以画柱状图为例,1.准备数据(a) 首先利用JFreeChart提供的DefaultCategoryDataset类创建一个数据集合对象,即:DefaultCategoryDataset dataset = new DefaultCategoryDataset();(b) 连接数据库,获取画图所需数据;(c) 通过DefaultCategoryDataset 中的addV alue()方法将数据加载进数据集合对象dataset,即dataset.addV alue(纵坐标值,每个柱的标题,横坐标值);2.创建图表对象其中ChartFactory类中有创建各种类型图表的方法,org.jfree.chart.JfreeChart类中也有三个创建图表对象的构造函数,可以根据自己的需要进行调用。
3.对图表对象进行设置通过CategoryPlot类和BarRenderer类对图表对象的一些属性进行设置,如图的背景色、柱之间的距离、图的链接、图标题的字体等。
4.生成图表文件在临时文件夹中生成图表文件,可以定制图表的高度和宽度。
filename为图表文件名,即:5.将图表文件写入PrintWriter中,其中pw为PrintWriter对象;三.前台开发在jsp页面中,调用后台画图JavaBean生成图表文件并返回图表文件名称,通过一个叫DisplayChart的servlet(即上面web.xml文件描述的那个servlet)来显示图表。
jfreechart createlinechart参数
jfreechart createlinechart参数`JFreeChart` 是Java 中用于创建图表的一个开源库,而`createLineChart` 是其中用于创建线形图的方法之一。
以下是`createLineChart` 方法的一些常用参数:```javapublic static JFreeChart createLineChart(String title, // 图表标题String categoryAxisLabel, // X 轴标签String valueAxisLabel, // Y 轴标签CategoryDataset dataset, // 数据集PlotOrientation orientation, // 图表方向(横向或纵向)boolean legend, // 是否显示图例boolean tooltips, // 是否显示工具提示boolean urls // 是否生成超链接)```下面是对这些参数的简要说明:1. title(图表标题):一个字符串,用于设置图表的主标题。
2. categoryAxisLabel(X 轴标签):一个字符串,用于设置X 轴的标签。
3. valueAxisLabel(Y 轴标签):一个字符串,用于设置Y 轴的标签。
4. dataset(数据集):一个`CategoryDataset` 对象,用于提供图表的数据。
5. orientation(图表方向):一个`PlotOrientation` 枚举值,表示图表的方向,可以是`PlotOrientation.HORIZONTAL`(横向)或`PlotOrientation.VERTICAL`(纵向)。
6. legend(是否显示图例):一个布尔值,表示是否在图表上显示图例(用于标识不同的数据系列)。
7. tooltips(是否显示工具提示):一个布尔值,表示是否在鼠标悬停时显示工具提示。
JFreeChart图形
Plot属性 Plot属性
//设置下面状态栏的信息(悬停时) plot.setLegendLabelToolTipGenerator(new new StandardPieSectionLabelGenerator("Tooltip for legend item {0}")); plot.setIgnoreNullValues(true true);//为空则不显示 true plot.setIgnoreZeroValues(true true);//為零則不顯示 true plot.setStartAngle(290D); //设置每块的起初位置 plot.setDirection(Rotation.CLOCKWISE);//设置旋转 逆时针 :ANTICLOCKWISE 顺时针:CLOCKWISE //plot3d.setDepthFactor(0.4D);//设置图片的正面的角度
悉JFreeChart的开发人员可以快速创建表示其数据的高质量图表。
JFreeChart的主页地址为: /jfreechart/index.html JFreeChart目前是最好的java图形解决方案,基本能够解 决目前的图形方面的需求
JFreeCha JfreeChart中的常见包
org.jfree.chart.servlet.DisplayChart 这个包中的DisplayChart继承自Httpservlet 用于处理显示图象。 org.jfree.chart.servlet.ServletUtilities 这 个 包 中 的 ServletUtilitie 类 有 一 系 列 方 法 , 例 如 , saveChartAs*;saveChartAs* 是 把 图 表 按 照 不 同 的 形 式 存 储 为 图 象 ; sendTempFile方法被重载了很多 次,用于把文件流发送response。
使用JFreeChart创建图表
JFreeChart概述
JFreeChart是开放源代码站点 是开放源代码站点上的一 是开放源代码站点 上的一 项目, 个JAVA项目,它主要用来各种各样的图表,这些图表包括: 项目 它主要用来各种各样的图表,这些图表包括:
Pie charts:饼图 (2D and 3D)、 Bar charts:柱状图 (2D and 3D) Line charts:曲线图 Area charts(区域图)、XY Plots(坐标图)、Time Series Charts(时序图)、 Histograms(直方图)、Difference Chart(方差图)、Step Chart(步骤图)、 Gantt Chart(甘特图)、Multiple Axis Charts、Combined and Overlaid Charts(混合图)等等
柱状图
step1:创建数据集对象
public static CategoryDataset createDataSet2() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.setValue(5000, "北京","易学java"); dataset.setValue(3000, "上海","易学java"); dataset.setValue(2000, "广州","易学java"); dataset.setValue(10000, "北京","JavaWeb整合开发与项目实战"); dataset.setValue(6000, "上海","JavaWeb整合开发与项目实战"); dataset.setValue(4000, "广州","JavaWeb整合开发与项目实战"); dataset.setValue(15000, "北京","易用struts"); dataset.setValue(5000, "上海","易用struts"); dataset.setValue(10000, "广州","易用struts"); dataset.setValue(20000, "北京","精通JSF"); dataset.setValue(10000, "上海","精通JSF"); dataset.setValue(10000, "广州","精通JSF"); return dataset; }
JFreeChart
JFreeChart组件可以生成各种各样的图形报表,如常用的
柱形图、区域图、饼形图、折线图、时序图、甘特图等;而对 于同一种类型的图表,JFreeChart组件还提供了不同的表现方式。
1页
JFreeChart的下载与使用
JFreeChart是开放源代码的图形报表组件(开源 站点上的一个Jave项目),其主页为 /jfreechart/index.html。
13页
Pie 所用的数据集:
PieDataset(接口):用于生成圆饼图的数据集类型 DefaultPieDataset:实现PieDataset接口,并用于绘制圆饼 图的必需数据集,它主要用于存储一些手动添加的数据集 defaultpiedataset.setValue(key, value) 用于向数据集中添加数 据 key:一般为该数据的来源名称 value:一般为double类型的数据
JFreeChart chart = ChartFactory.createBarChar t("xin", "Categry", "Value", getDataset(), PlotOrientation.VERTICAL, true, true, true);
19页
2.3、属性
JFreeChart chart = ChartFactory.createBarChart("统计", "Categry", "Value", getDataset(), PlotOrientation.VERTICAL, true, true, true); CategoryPlot是Plot类的子类,类主要用于描述CategoryDataset 数据集合类型的图表,它支持折线图、区域图等,其常用方法及说明: CategoryPlot cgplot = chart.getCategoryPlot(); //设置图表显示背景 cgplot.setBackgroundPaint(Color.blue); //横坐标网格线红色 cgplot.setDomainGridlinePaint(Color.red); //显示为可见 cgplot.setDomainGridlinesVisible(true); //纵坐标网格线红色 cgplot.setRangeGridlinePaint(Color.red); //设置横坐标与纵坐标的显示位置; cgplot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT); cgplot.setRangeAxisLocation(AxisLocation.TOP_OR_RIGHT);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
创建柱状图1 引入jFreechart的包jcommon-1.0.15.jarjfreechart-1.0.12.jarjfreechart-1.0.12-experimental.jar2 在web.xml中加入<servlet><servlet-nam e>DisplayChart</servlet-nam e><servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class></servlet><servlet-m apping><servlet-nam e>DisplayChart</servlet-nam e><url-pattern>/servlet/DisplayChart</url-pattern></servlet-m apping>3 在jsp或者servlet或者action中写// 创建一个柱状图DefaultCategoryDataset dataSet =new DefaultCategoryDataset();// 数据装入for(int i=0;i<list.size();i++){Item item =(Item)list.get(i);dataSet.setValue(Item.getRating(), "testNam e", Item.getTime());}JFreeChart chart = ChartFactory.createBarChart("统计图","ratings", "time", dataSet, PlotOrientation.VERTICAL,false, true, false);try{String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, ses sion);String graphURL = request.getContextPath() + "/servlet/DisplayChart?filen am e=" + filename;request.setAttribute("graphURL",graphURL);} catch (Exception e){}4 在页面引入<img src="<%= request.getAttribute("graphURL") %>">这种方式会生成临时图片文件,默认是不对其进行清理的,所以要手工进行处理对于临时文件的清除,jfreechart提供了一个实现了HttpSessionBindingListener的类Chart Deleter,里面有个valueUnbound方法,这个方法是在session执行remove的时候被自动执行,所以我们只需要在页面刚进入的时候调用session.removeAttribute("JFreeChart_Deleter");这样会删除当前session之前生成的图表。
还有一种方法是用流输出的方式,直接,即:注释掉上面的try中的代码,加入如下代码ChartUtilities.writeChartAsJPEG(response.getOutputStream(),chart,500,300);然后在显示页面引入该jsp或者servlet<img src="<%=request.getContextPath()%>/servlet">简单的折线图就是把createBarChart方法换成createLineChart方法,高级特性请参见JFreeChart的文档页面动态JFreechart<% tuxingCanShu TXCS= (tuxingCanShu)request.getAttribute("TXCS");YoungRepository youngEM=(YoungRepository)request.getSession().getAttribute("DB2");String diqu=(String) request.getSession().getAttribute("diqu");String JCDBM=TXCS.getJCDBM();String LB=TXCS.getLB();String YZBM=TXCS.getYZBM();String Begintime=TXCS.getBegintime();String Endtime=TXCS.getEndtime();LSSJ_Boimp LSSJB=new LSSJ_Boimp();ArrayList<LiShi> ls=LSSJB.FindLiShi_yearMooth(youngEM, JCDBM, LB, YZBM, Begintime, Endtime, diqu);DIC_XTYZ_BoImp DXB=new DIC_XTYZ_BoImp();DIC_JCYZ dj=DXB.findDIC_JCYZ(youngEM, YZBM);List<LiShi> lstemp=new ArrayList<LiShi>();if(ls.size()>20){lstemp= ls.subList(0,20);}else{lstemp=ls;}if(!lstemp.isEmpty()&&lstemp!=null){DefaultCategoryDataset dataset = new DefaultCategoryDataset();int i=0;for(LiShi templs:lstemp){if(i%9==0){String series1 =dj.getJCYZ_MC();// 横轴名称(列名称)String type = templs.getDatatime().substring(11,16);String avlue=templs.getAvgAValue();double EMSvalue=Double.parseDouble(avlue);dataset.addValue(EMSvalue, series1, type);}else{String series1 =dj.getJCYZ_MC();String type = templs.getDatatime().substring(11, 16);String avlue=templs.getAvgAValue();double EMSvalue=Double.parseDouble(avlue);dataset.addValue(EMSvalue, series1, type);}i++;}//--------------------------------数据集建立完毕-----------------------------//建立chartJFreeChart chart = ChartFactory.createLineChart("", // chart title"时间", // domain axis label"", // range axis labeldataset, // dataPlotOrientation.VERTICAL, // orientationtrue, // include legendtrue, // tooltipsfalse// urls);// NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...chart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 12));CategoryPlot plot = chart.getCategoryPlot();// customise the range axis...plot.setDomainGridlinePaint(Color.white);//设置网格竖线(Domain轴)颜色plot.setDomainGridlinesVisible(true);NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();rangeAxis.setLabelFont(new Font("宋体", Font.BOLD, 12));rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickU nits());rangeAxis.setAutoRangeIncludesZero(true);rangeAxis.setUpperMargin(0.20);rangeAxis.setLabelAngle(Math.PI / 2.0);CategoryAxis axis = (CategoryAxis) plot.getDomainAxis();axis.setLabelFont(new Font("宋体", Font.BOLD, 12));axis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);//倾斜45度LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer(); renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());//显示折点数据renderer.setItemLabelsVisible(true);if (renderer instanceof LineAndShapeRenderer ) {LineAndShapeRenderer renderer1 = (LineAndShapeRenderer ) renderer;renderer1.setBaseShapesVisible(true);renderer1.setBaseShapesFilled(true);renderer1.setShapesVisible(true);//设置曲线是否显示数据点 }String filename = ServletUtilities.saveChartAsPNG(chart, 700, 400, null, session);String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;%><img src="<%=graphURL %>" width=700height=400border=0usemap="#<%=filename %>"><%} %>。