JFreeChart与专题地图

合集下载

JFreeChart_多轴和数据源图表

JFreeChart_多轴和数据源图表




简介 实例 建议和技巧

JFreeChart在CategoryPlot和XYPlot类中支持多轴 和数据源显示。利用这个特征可以在一个图表上显 示两个或多个数据源数据,但对于数据包含的数据 有巨大差距时留有一定的余地。如图 所示。


典型的,使用JFreeChart构建图表时,图表有一 个单数据源、单renderer、单X/Y轴的图区最为 常见。然而,在一个图区上添加多个数据源、多 个renderer和多个轴也是可能的。 本实例中,展示了如何在一个图区上显示其他额 外的数据源、renderer 和轴。




创建一个图表 添加额外的轴 添加一个额外的数据源 添加一个额外的renderer

当添加一个数据源时,通常为该数据源添加一个附 加的 renderer 也是非常有意义的。使用方法 setRenderer():

方法的第一个参数为上节中添加的数据源的索引。 注意:如果不想为数据源指定一个附加的 rendere, 系统将默认使用主 renderer,这样系列的颜色就 会在主数据源和附加数据源之间共享。



简介 实例 建议和技巧

当使用多轴图表时,需要为系列对应的轴提供一些 可视化的建议。


创建一个图表 添加额外的轴 添加一个额外的数据源 添加一个额外的renderer

如果在图区上添加额外的轴,使用setRangeAxis()方法 来添加: 方法 setRangeAxis()是用来添加图区的轴,注意轴的 索引1已经被使用——添加其他轴时,通过增加该索引 来添加新轴。方法setRangeAxisLocation()允许指定 轴出现的位置(使用 AxisLocation 类)。添加的轴可 以跟主坐标轴同一边,或者在对立边。例如:如果指定 的是 AxisLocation.BOTTOM_OR_LEFT,这意味着如 果图区的方向是垂直的话,将在右边添加一个Y轴,如 果图区的方向是水平的话,将在底部添加一个 Y 轴。

JFreeChart支持的图表类型总结

JFreeChart支持的图表类型总结

JFreeChart支持的图表类型总结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组)void addAnnotation(CategoryAnnotation annotation) 给数据区加一个注释void addRangeMarker(Marker marker,Layer layer) 给数据区加一个数值范围区域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完整柱状图import class AttendanceMain{p ublic static void main(String[] args) throws IOException{double[][] data = new double[][]{{100,96,98,95,99,100,92,93,91,94,96},{97,96,98,95,99,100,92,93,91,94,96},{97,96,98,95,99,100,92,93,91,94,96},{97,96,98,95,99,100,92,93,91,94,96}};String[] columnKeys = { "测控1班", "测控2班", "信号1班", "信号2班", "信号3班" ,"计通1班","计通2班","城轨1班","城轨2班","计应1班","计应2班"};String[] rowKeys = {"2021级","2021级","2021级","2021级"};new A ttendance(data,rowKeys,columnKeys );ut,;etItemFont(new Font("华文行楷",,20));//设置上下左右显示位置;;//这句代码解决了底部汉字乱码的问题(new Font("华文行楷",,20));//显示每一个柱的数值,并修改该数值的字体属性(new StandardCategoryItemLabelGenerator());//显示每一个柱的数值(true);//注意:此句很关键,若无此句,那数字的显示会被覆盖,给人数字没有显示出来的问题//(new ItemLabelPosition( , );(10D);// 设置柱形图上的文字偏离值//(true);(render);//利用咱们设计的效果//设置纵横坐标的显示位置//学校显示在下端(柱子竖直)或左侧(柱子水平);//人数显示在下端(柱子水平)或左侧(柱子竖直);//设定柱子上面的颜色(0, ; // 给series1 Bar(1, ("#8979FF")); // 给series2 Bar(2, ; // 给series4 Bar(3, new Color(200, 50, 50)); // 给series5 Bar(0,;//边框为黑色(1,;//边框为黑色(2,; //边框为黑色(3,;//边框为黑色FileOutputStream gf = null;try{gf = new F ileOutputStream("E:\\");//将报表保留为JPG文件(gf, //文件保留物理路径包括路径和文件名1f, //图片质量chart, //图表对象1600, //图像宽度668, //图像高度null); //显示信息}finally{try{//关闭输出流();"success");}catch(Exception e){}}}}。

JFreeChart绘制报表

JFreeChart绘制报表

JFreeChart常用类介绍 常用类介绍
Plot(接口)
描述:对生成的报表图形进行绘图的功能. 所属类包:org.jfree.chart.plot -CategoryPlot:实现Plot接口,用于折线图, 柱状图的绘图类 -PiePlot:实现Plot接口,用于饼图的绘图类 -XYPlot:实现Plot接口,用于时序图的绘图类
JFreeChart的使用 的使用
数据集的创建:
3,适用于柱形,线形图的数据集 TimeSeriesCollection tsCollection = new TimeSeriesCollection(); TimeSeries ts1 = new TimeSeries("R1"); ts1.add(new TimeSeriesDataItem(new Day(1, 2, 2009), 0.56D)); ts1.add(new TimeSeriesDataItem(new Day(2, 2, 2009), 0.56D)); ts1.add(new TimeSeriesDataItem(new Day(3, 2, 2009), 0.51D)); ts1.add(new TimeSeriesDataItem(new Day(4, 2, 2009), 0.52D)); ts1.add(new TimeSeriesDataItem(new Day(5, 2, 2009), 0.35D)); ts1.add(new TimeSeriesDataItem(new Day(6, 2, 2009), 0.67D)); ts1.add(new TimeSeriesDataItem(new Day(7, 2, 2009), 0.81D)); ts1.add(new TimeSeriesDataItem(new Day(8, 2, 2009), 0.44D));

JFreeChart图形

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。

java利用JFreeChart实现各种数据统计图(柱形图,饼图,折线图)

java利用JFreeChart实现各种数据统计图(柱形图,饼图,折线图)

java利‎用JFre‎eChar‎t实现各种‎数据统计图‎(柱形图,饼图,折线图)最近在做数‎据挖掘的课‎程设计,需要将数据‎分析的结果‎很直观的展‎现给用户,这就要用到‎数据统计图‎,要实现这个‎功能就需要‎几个第三方‎包了:1. jfree‎c hart‎-1.0.13.jar2. jcomm‎o n-1.0.16.jar3. gnuja‎x p.jar先来看一下‎,最终效果图‎:主要是jf‎r eech‎a rt-1.0.13.jar,但这三个包‎要齐全,我已经将所‎有与jfr‎e echa‎r t有关的‎j ar包与‎本文实例的‎工程(代码)一同压缩上‎传了,有兴趣的同‎学可以下载‎,下载地址:http://downl‎o /detai‎l/pzhtp‎f/43277‎00接下来,我们一步步‎来实现本程‎序。

一,前期准备工‎作,也就把这三‎个第三方包‎添加进本文‎工程,添加过程特‎别简单,前面写过一‎篇博客,讲的是ja‎v a如何读‎取Exce‎l表格中的‎数据(有兴趣的同‎学可以看一‎看:/pzhtp‎f/artic‎l e/detai‎l s/75061‎35),也要添加第‎三方包,添加过程一‎模一样,这里我们在‎复习一遍:1,建,立java‎项目,在这个项目‎在建立一个‎新的文件夹‎l i b;2,将上述三个‎jar包,复制到li‎b3,然后右键点‎击这个ja‎v a项目,选择Pro‎p erti‎e s4,在左侧列表‎里选中Ja‎v a Build‎Path,右侧选中L‎i brar‎i es5,点击Add‎JARs6,然后去选择‎这个项目中‎lib文件‎夹中的三个‎jar,点击确定成功后,项目中会多‎一个文件夹‎为:Refer‎e nced‎Libra‎r ies二,实现柱形图‎的java‎代码:impor‎t java.awt.Font;impor‎t org.jfree‎.chart‎.Chart‎F acto‎r y;impor‎t org.jfree‎.chart‎.Chart‎P anel‎;impor‎t org.jfree‎.chart‎.JFree‎C hart‎;impor‎t org.jfree‎.chart‎.axis.Categ‎o ryAx‎i s;impor‎t org.jfree‎.chart‎.axis.Value‎A xis;impor‎t org.jfree‎.chart‎.plot.Categ‎o ryPl‎o t;impor‎t org.jfree‎.chart‎.plot.PlotO‎r ient‎a tion‎;impor‎t org.jfree‎.data.categ‎o ry.Categ‎o ryDa‎t aset‎;impor‎t org.jfree‎.data.categ‎o ry.Defau‎l tCat‎e gory‎D atas‎e t;publi‎c class‎BarCh‎a rt {Chart‎P anel‎frame‎1;publi‎c BarCh‎a rt(){Categ‎o ryDa‎t aset‎datas‎e t = getDa‎t aSet‎();JFree‎C hart‎chart‎= Chart‎F acto‎r y.creat‎e BarC‎h art3‎D("水果", // 图表标题"水果种类", // 目录轴的显‎示标签"数量", // 数值轴的显‎示标签datas‎e t, // 数据集PlotO‎r ient‎a tion‎.VERTI‎C AL, // 图表方向:水平、垂直true, // 是否显示图‎例(对于简单的‎柱状图必须‎是fals‎e)false‎, // 是否生成工‎具false‎ // 是否生成U‎R L链接);//从这里开始‎Categ‎o ryPl‎o t plot=chart‎.getCa‎t egor‎y Plot‎();//获取图表区‎域对象Categ‎o ryAx‎i s domai‎n Axis‎=plot.getDo‎m ainA‎x is(); //水平底部列‎表domai‎n Axis‎.setLa‎b elFo‎n t(new Font("黑体",Font.BOLD,14)); //水平底部标‎题domai‎n Axis‎.setTi‎c kLab‎e lFon‎t(new Font("宋体",Font.BOLD,12)); //垂直标题Value‎A xis range‎A xis=plot.getRa‎n geAx‎i s();//获取柱状range‎A xis.setLa‎b elFo‎n t(new Font("黑体",Font.BOLD,15));chart‎.getLe‎g end().setIt‎e mFon‎t(new Font("黑体", Font.BOLD, 15));chart‎.getTi‎t le().setFo‎n t(new Font("宋体",Font.BOLD,20));//设置标题字‎体//到这里结束‎,虽然代码有‎点多,但只为一个‎目的,解决汉字乱‎码问题frame‎1=new Chart‎P anel‎(chart‎,true); //这里也可以‎用char‎t Fram‎e,可以直接生‎成一个独立‎的Fram‎e}priva‎t e stati‎c Categ‎o ryDa‎t aset‎getDa‎t aSet‎() {Defau‎l tCat‎e gory‎D atas‎e t datas‎e t = new Defau‎l tCat‎e gory‎D atas‎e t();datas‎e t.addVa‎l ue(100, "北京", "苹果");datas‎e t.addVa‎l ue(100, "上海", "苹果");datas‎e t.addVa‎l ue(100, "广州", "苹果");datas‎e t.addVa‎l ue(200, "北京", "梨子");datas‎e t.addVa‎l ue(200, "上海", "梨子");datas‎e t.addVa‎l ue(200, "广州", "梨子"); datas‎e t.addVa‎l ue(300, "北京", "葡萄"); datas‎e t.addVa‎l ue(300, "上海", "葡萄"); datas‎e t.addVa‎l ue(300, "广州", "葡萄"); datas‎e t.addVa‎l ue(400, "北京", "香蕉"); datas‎e t.addVa‎l ue(400, "上海", "香蕉"); datas‎e t.addVa‎l ue(400, "广州", "香蕉"); datas‎e t.addVa‎l ue(500, "北京", "荔枝"); datas‎e t.addVa‎l ue(500, "上海", "荔枝"); datas‎e t.addVa‎l ue(500, "广州", "荔枝"); retur‎n datas‎e t;}publi‎c Chart‎P anel‎getCh‎a rtPa‎n el(){retur‎n frame‎1;}}效果图如下‎:但我们把p‎r ivat‎e stati‎c Categ‎o ryDa‎t aset‎getDa‎t aSet‎(){}方法中的数‎据变化一下‎后,又会形成另‎一种效果,比如说我们‎改成:priva‎t e stati‎c Categ‎o ryDa‎t aset‎getDa‎t aSet‎() {Defau‎l tCat‎e gory‎D atas‎e t datas‎e t = new Defau‎l tCat‎e gory‎D atas‎e t(); datas‎e t.addVa‎l ue(100, "苹果", "苹果");datas‎e t.addVa‎l ue(200, "梨子", "梨子");datas‎e t.addVa‎l ue(300, "葡萄", "葡萄");datas‎e t.addVa‎l ue(400, "香蕉", "香蕉");datas‎e t.addVa‎l ue(500, "荔枝", "荔枝");retur‎n datas‎e t;}效果图如下‎:三,实现饼状图‎的java‎代码:packa‎g e com.njue.testJ‎F reeC‎h art;impor‎t java.awt.Font;impor‎t java.text.Decim‎a lFor‎m at; impor‎t java.text.Numbe‎r Form‎a t;impor‎t javax‎.swing‎.JPane‎l;impor‎t org.jfree‎.chart‎.Chart‎F acto‎r y;impor‎t org.jfree‎.chart‎.Chart‎P anel‎;impor‎t org.jfree‎.chart‎.JFree‎C hart‎;impor‎t org.jfree‎.chart‎.label‎s.Stand‎a rdPi‎e Sect‎i onLa‎b elGe‎n erat‎o r;impor‎t org.jfree‎.chart‎.plot.PiePl‎o t;impor‎t org.jfree‎.data.gener‎a l.Defau‎l tPie‎D atas‎e t;publi‎c class‎PieCh‎a rt {Chart‎P anel‎frame‎1;publi‎c PieCh‎a rt(){Defau‎l tPie‎D atas‎e t data = getDa‎t aSet‎();JFree‎C hart‎chart‎= Chart‎F acto‎r y.creat‎e PieC‎h art3‎D("水果产量",data,true,false‎,false‎);//设置百分比‎PiePl‎o t piepl‎o t = (PiePl‎o t) chart‎.getPl‎o t();Decim‎a lFor‎m at df = new Decim‎a lFor‎m at("0.00%");//获得一个D‎e cima‎l Form‎a t对象,主要是设置‎小数问题Numbe‎r Form‎a t nf = Numbe‎r Form‎a t.getNu‎m berI‎n stan‎c e();//获得一个N‎u mber‎F orma‎t对象Stand‎a rdPi‎e Sect‎i onLa‎b elGe‎n erat‎o r sp1 = newStand‎a rdPi‎e Sect‎i onLa‎b elGe‎n erat‎o r("{0} {2}", nf, df);//获得Sta‎n dard‎P ieSe‎c tion‎L abel‎G ener‎a tor对‎象piepl‎o t.setLa‎b elGe‎n erat‎o r(sp1);//设置饼图显‎示百分比//没有数据的‎时候显示的‎内容piepl‎o t.setNo‎D ataM‎e ssag‎e("无数据显示‎");piepl‎o t.setCi‎r cula‎r(false‎);piepl‎o t.setLa‎b elGa‎p(0.02D);piepl‎o t.setIg‎n oreN‎u llVa‎l ues(true);//设置不显示‎空值piepl‎o t.setIg‎n oreZ‎e roVa‎l ues(true);//设置不显示‎负值frame‎1=new Chart‎P anel‎(chart‎,true);chart‎.getTi‎t le().setFo‎n t(new Font("宋体",Font.BOLD,20));//设置标题字‎体PiePl‎o t piePl‎o t= (PiePl‎o t) chart‎.getPl‎o t();//获取图表区‎域对象packa‎g e com.njue.testJ‎F reeC‎h art;impor‎t java.awt.Font;impor‎t java.text.Simpl‎e Date‎F orma‎t;impor‎t org.jfree‎.chart‎.Chart‎F acto‎r y; impor‎t org.jfree‎.chart‎.Chart‎P anel‎;impor‎t org.jfree‎.chart‎.JFree‎C hart‎;impor‎t org.jfree‎.chart‎.axis.DateA‎x is; impor‎t org.jfree‎.chart‎.axis.Value‎A xis;impor‎t org.jfree‎.chart‎.plot.XYPlo‎t;impor‎t org.jfree‎.data.time.Month‎;impor‎t org.jfree‎.data.time.TimeS‎e ries‎;impor‎t org.jfree‎.data.time.TimeS‎e ries‎C olle‎c tion‎;impor‎t org.jfree‎.data.xy.XYDat‎a set;publi‎c class‎TimeS‎e ries‎C hart‎{Chart‎P anel‎frame‎1;publi‎c TimeS‎e ries‎C hart‎(){XYDat‎a set xydat‎a set = creat‎e Data‎s et();JFree‎C hart‎jfree‎c hart‎=Chart‎F acto‎r y.creat‎e Time‎S erie‎s Char‎t("Legal‎& Gener‎a l单位信‎托基金价格‎", "日期", "价格",xydat‎a set, true, true, true);XYPlo‎t xyplo‎t = (XYPlo‎t) jfree‎c hart‎.getPl‎o t();DateA‎x is datea‎x is = (DateA‎x is) xyplo‎t.getDo‎m ainA‎x is();datea‎x is.setDa‎t eFor‎m atOv‎e rrid‎e(new Simpl‎e Date‎F orma‎t("MMM-yyyy"));frame‎1=new Chart‎P anel‎(jfree‎c hart‎,true);datea‎x is.setLa‎b elFo‎n t(new Font("黑体",Font.BOLD,14)); //水平底部标‎题datea‎x is.setTi‎c kLab‎e lFon‎t(new Font("宋体",Font.BOLD,12)); //垂直标题 Value‎A xis range‎A xis=xyplo‎t.getRa‎n geAx‎i s();//获取柱状range‎A xis.setLa‎b elFo‎n t(new Font("黑体",Font.BOLD,15));jfree‎c hart‎.getLe‎g end().setIt‎e mFon‎t(new Font("黑体", Font.BOLD, 15)); jfree‎c hart‎.getTi‎t le().setFo‎n t(new Font("宋体",Font.BOLD,20));//设置标题字‎体}priva‎t e stati‎c XYDat‎a set creat‎e Data‎s et() { //这个数据集‎有点多,但都不难理‎解TimeS‎e ries‎times‎e ries‎= new TimeS‎e ries‎("legal‎& gener‎a l欧洲指‎数信任",org.jfree‎.data.time.Month‎.class‎);times‎e ries‎.add(new Month‎(2, 2001), 181.80000‎00000‎0001D‎);times‎e ries‎.add(new Month‎(3, 2001), 167.30000‎00000‎0001D‎);times‎e ries‎.add(new Month‎(4, 2001), 153.80000‎00000‎0001D‎);times‎e ries‎.add(new Month‎(5, 2001), 167.59999‎99999‎9999D‎);times‎e ries‎.add(new Month‎(6, 2001), 158.80000‎00000‎0001D‎);times‎e ries‎.add(new Month‎(7, 2001), 148.30000‎00000‎0001D‎);times‎e ries‎.add(new Month‎(8, 2001), 153.90000‎00000‎0001D‎);times‎e ries‎.add(new Month‎(9, 2001), 142.69999‎99999‎9999D‎);times‎e ries‎.add(new Month‎(10, 2001), 123.2D);times‎e ries‎.add(new Month‎(11, 2001), 131.80000‎00000‎0001D‎);times‎e ries‎.add(new Month‎(12, 2001), 139.59999‎99999‎9999D‎);times‎e ries‎.add(new Month‎(1, 2002), 142.90000‎00000‎0001D‎);times‎e ries‎.add(new Month‎(2, 2002), 138.69999‎99999‎9999D‎);times‎e ries‎.add(new Month‎(3, 2002), 137.30000‎00000‎0001D‎);times‎e ries‎.add(new Month‎(4, 2002), 143.90000‎00000‎0001D‎);times‎e ries‎.add(new Month‎(5, 2002), 139.80000‎00000‎0001D‎);times‎e ries‎.add(new Month‎(6, 2002), 137D);times‎e ries‎.add(new Month‎(7, 2002), 132.80000‎00000‎0001D‎);TimeS‎e ries‎times‎e ries‎1 = new TimeS‎e ries‎("legal‎& gener‎a l英国指‎数信任",org.jfree‎.data.time.Month‎.class‎);times‎e ries‎1.add(new Month‎(2, 2001), 129.59999‎99999‎9999D‎);times‎e ries‎1.add(new Month‎(3, 2001), 123.2D);times‎e ries‎1.add(new Month‎(4, 2001), 117.2D);times‎e ries‎1.add(new Month‎(5, 2001), 124.09999‎99999‎9999D‎);times‎e ries‎1.add(new Month‎(6, 2001), 122.59999‎99999‎9999D‎);times‎e ries‎1.add(new Month‎(7, 2001), 119.2D);times‎e ries‎1.add(new Month‎(8, 2001), 116.5D);times‎e ries‎1.add(new Month‎(9, 2001), 112.7D);times‎e ries‎1.add(new Month‎(10, 2001), 101.5D);times‎e ries‎1.add(new Month‎(11, 2001), 106.09999‎99999‎9999D‎);times‎e ries‎1.add(new Month‎(12, 2001), 110.3D);times‎e ries‎1.add(new Month‎(1, 2002), 111.7D);times‎e ries‎1.add(new Month‎(2, 2002), 111D);times‎e ries‎1.add(new Month‎(3, 2002), 109.59999‎99999‎9999D‎);times‎e ries‎1.add(new Month‎(4, 2002), 113.2D);times‎e ries‎1.add(new Month‎(5, 2002), 111.59999‎99999‎9999D‎);times‎e ries‎1.add(new Month‎(6, 2002), 108.8D);times‎e ries‎1.add(new Month‎(7, 2002), 101.59999‎99999‎9999D‎);TimeS‎e ries‎C olle‎c tion‎times‎e ries‎c olle‎c tion‎= newTimeS‎e ries‎C olle‎c tion‎();times‎e ries‎c olle‎c tion‎.addSe‎r ies(times‎e ries‎);times‎e ries‎c olle‎c tion‎.addSe‎r ies(times‎e ries‎1);retur‎n times‎e ries‎c olle‎c tion‎;}publi‎c Chart‎P anel‎getCh‎a rtPa‎n el(){retur‎n frame‎1;}}效果图如下‎:再来看一下‎主方法:impor‎t java.awt.GridL‎a yout‎;impor‎t javax‎.swing‎.JFram‎e;publi‎c class‎mainC‎l ass {publi‎c stati‎c void main(Strin‎g args[]){JFram‎e frame‎=new JFram‎e("Java数‎据统计图");frame‎.setLa‎y out(new GridL‎a yout‎(2,2,10,10));frame‎.add(new BarCh‎a rt().getCh‎a rtPa‎n el()); //添加柱形图‎frame‎.add(new BarCh‎a rt1().getCh‎a rtPa‎n el()); //添加柱形图‎的另一种效‎果frame‎.add(new PieCh‎a rt().getCh‎a rtPa‎n el()); //添加饼状图‎frame‎.add(new TimeS‎e ries‎C hart‎().getCh‎a rtPa‎n el()); //添加折线图‎frame‎.setBo‎u nds(50, 50, 800, 600);frame‎.setVi‎s ible‎(true);}}五,总结以上都是一‎个简单的例‎子去实现了‎,想了解更深‎的同学可自‎行查询资料‎,其实以上代‎码都通俗易‎懂,只要结合自‎己的实际情‎况,便可开发出‎属于自己的‎A ppli‎c atio‎n,大家可以看‎出我这里是‎在Appl‎i cati‎o n上实现‎的,其实更多情‎况数据统计‎图在jav‎a web上‎应用更多,大家也可自‎行了解。

折线图jfreechartJFreeChart折线图总结

折线图jfreechartJFreeChart折线图总结

折线图jfreechart:JFreeChart折线图总结疯狂代码 / ĵ:http://Java/Article21473.html 我的编程环境是eclipse3.20+Orcal10g,使用的框架是struts1.2,写log使用的是log4j。

首先,我们必须引入开发所使用的包。

网上的介绍都说大部分需要3个包。

jcommon-1.0.14.jar和jfreechart-1.0.11.jar,还有另外一个包,可是我在操作中发现,引入上述3个包,我的tomcat在启动时总会出错,与现有的程序包有冲突。

后来在同事的帮助下,才发现只要上述前两个包就可以了。

将这两个包放入tomcat的lib中,并增加这两个包的环境变量。

修改web.xml,增加相应的servlet。

<servlet><servlet-name>DisplayChart</servlet-name><servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class></servlet><!-- Action Servlet Mapping --><servlet-mapping><servlet-name>DisplayChart</servlet-name><url-pattern>/servlet/DisplayChart</url-pattern></servlet-mapping> 接下来,我们便可以编写程序了。

我的需求是在后台处理完数据后,生成时间金额的一个统计图,然后在web页中显示图片。

JFreeChart可以产生不同类型的统计图,如饼图,折线图,曲线图,柱状图等。

它很好的使用了工厂模式,所有这些类型的图都需要相应在工厂ChartFactory中生成出相应的chart对象。

jfreechart_生成折线图,饼图,柱状图,堆栈柱状图

jfreechart_生成折线图,饼图,柱状图,堆栈柱状图

最近公司使用jfreechart来生成统计图,使用了折线图,饼图等,因为用的1.0.8a版的jfreechart,与1.0.0版本的地方有很多不同,而且图片生成清晰度比老版的高,如下是我做的demo.1.所需包(1) jfreechart-1.0.8a.jar(2) jcommon-1.0.12.jar2.运行环境JDK 1.53.源代码import java.awt.Color;import java.awt.Font;import java.io.File;import java.io.FileOutputStream;import java.text.DecimalFormat;import java.text.NumberFormat;import org.jfree.chart.ChartFactory;import org.jfree.chart.ChartUtilities;import org.jfree.chart.JFreeChart;import org.jfree.chart.axis.CategoryAxis;import org.jfree.chart.axis.CategoryLabelPositions;import org.jfree.chart.axis.NumberAxis;import org.jfree.chart.axis.V alueAxis;import bels.StandardCategoryItemLabelGenerator;import bels.StandardPieSectionLabelGenerator;import org.jfree.chart.plot.CategoryPlot;import org.jfree.chart.plot.PiePlot3D;import org.jfree.chart.plot.PlotOrientation;import org.jfree.chart.renderer.category.BarRenderer;import org.jfree.chart.renderer.category.LineAndShapeRenderer;import org.jfree.chart.renderer.category.StackedBarRenderer;import org.jfree.chart.title.TextTitle;import org.jfree.data.category.CategoryDataset;import org.jfree.data.general.DatasetUtilities;import org.jfree.data.general.DefaultPieDataset;import org.jfree.data.general.PieDataset;/*** 实际取色的时候一定要16位的,这样比较准确** @author new*/public class CreateChartServiceImpl{private static final String CHART_PA TH = "E:/test/";public static void main(String[] args){// TODO Auto-generated method stubCreateChartServiceImpl pm = new CreateChartServiceImpl();// 生成饼状图pm.makePieChart();// 生成单组柱状图pm.makeBarChart();// 生成多组柱状图pm.makeBarGroupChart();// 生成堆积柱状图pm.makeStackedBarChart();// 生成折线图pm.makeLineAndShapeChart();}/*** 生成折线图*/public void makeLineAndShapeChart(){double[][] data = new double[][]{{ 672, 766, 223, 540, 126 },{ 325, 521, 210, 340, 106 },{ 332, 256, 523, 240, 526 } };String[] rowKeys ={ "苹果", "梨子", "葡萄" };String[] columnKeys ={ "北京", "上海", "广州", "成都", "深圳" };CategoryDataset dataset = getBarData(data, rowKeys, columnKeys); createTimeXYChar("折线图", "x轴", "y轴", dataset, "lineAndShap.png"); }/*** 生成分组的柱状图*/public void makeBarGroupChart(){double[][] data = new double[][]{ 672, 766, 223, 540, 126 },{ 325, 521, 210, 340, 106 },{ 332, 256, 523, 240, 526 } };String[] rowKeys ={ "苹果", "梨子", "葡萄" };String[] columnKeys ={ "北京", "上海", "广州", "成都", "深圳" };CategoryDataset dataset = getBarData(data, rowKeys, columnKeys); createBarChart(dataset, "x坐标", "y坐标", "柱状图", "barGroup.png");}/*** 生成柱状图*/public void makeBarChart(){double[][] data = new double[][]{{ 672, 766, 223, 540, 126 } };String[] rowKeys ={ "苹果" };String[] columnKeys ={ "北京", "上海", "广州", "成都", "深圳" };CategoryDataset dataset = getBarData(data, rowKeys, columnKeys); createBarChart(dataset, "x坐标", "y坐标", "柱状图", "bar.png");}/*** 生成堆栈柱状图*/public void makeStackedBarChart(){double[][] data = new double[][]{{ 0.21, 0.66, 0.23, 0.40, 0.26 },{ 0.25, 0.21, 0.10, 0.40, 0.16 } };String[] rowKeys ={ "苹果", "梨子" };String[] columnKeys ={ "北京", "上海", "广州", "成都", "深圳" };CategoryDataset dataset = getBarData(data, rowKeys, columnKeys); createStackedBarChart(dataset, "x坐标", "y坐标", "柱状图", "stsckedBar.png"); }/*** 生成饼状图*/public void makePieChart(){double[] data ={ 9, 91 };String[] keys ={ "失败率", "成功率" };createV alidityComparePimChar(getDataPieSetByUtil(data, keys), "饼状图", "pie2.png", keys);}// 柱状图,折线图数据集public CategoryDataset getBarData(double[][] data, String[] rowKeys, String[] columnKeys){return DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);}// 饼状图数据集public PieDataset getDataPieSetByUtil(double[] data,String[] datadescription){if (data != null && datadescription != null){if (data.length == datadescription.length){DefaultPieDataset dataset = new DefaultPieDataset();for (int i = 0; i < data.length; i++){dataset.setV alue(datadescription[i], data[i]);}return dataset;}}return null;/*** 柱状图**@param dataset 数据集* @param xName x轴的说明(如种类,时间等)* @param yName y轴的说明(如速度,时间等)* @param chartTitle 图标题* @param charName 生成图片的名字* @return*/public String createBarChart(CategoryDataset dataset, String xName,String yName, String chartTitle, String charName){JFreeChart chart = ChartFactory.createBarChart(chartTitle, // 图表标题xName, // 目录轴的显示标签yName, // 数值轴的显示标签dataset, // 数据集PlotOrientation.VERTICAL, // 图表方向:水平、垂直true, // 是否显示图例(对于简单的柱状图必须是false)false, // 是否生成工具false // 是否生成URL链接);Font labelFont = new Font("SansSerif", Font.TRUETYPE_FONT, 12);/** V ALUE_TEXT_ANTIALIAS_OFF表示将文字的抗锯齿关闭,* 使用的关闭抗锯齿后,字体尽量选择12到14号的宋体字,这样文字最清晰好看*///chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.V ALUE_TEXT_ANTIALIAS_OFF);chart.setTextAntiAlias(false);chart.setBackgroundPaint(Color.white);// create plotCategoryPlot plot = chart.getCategoryPlot();// 设置横虚线可见plot.setRangeGridlinesVisible(true);// 虚线色彩plot.setRangeGridlinePaint(Color.gray);// 数据轴精度NumberAxis vn = (NumberAxis) plot.getRangeAxis();// vn.setAutoRangeIncludesZero(true);DecimalFormat df = new DecimalFormat("#0.00");vn.setNumberFormatOverride(df); // 数据轴数据标签的显示格式// x轴设置CategoryAxis domainAxis = plot.getDomainAxis();domainAxis.setLabelFont(labelFont);// 轴标题domainAxis.setTickLabelFont(labelFont);// 轴数值// Lable(Math.PI/3.0)度倾斜// domainAxis.setCategoryLabelPositions(CategoryLabelPositions// .createUpRotationLabelPositions(Math.PI / 3.0));domainAxis.setMaximumCategoryLabelWidthRatio(0.6f);// 横轴上的Lable 是否完整显示// 设置距离图片左端距离domainAxis.setLowerMargin(0.1);// 设置距离图片右端距离domainAxis.setUpperMargin(0.1);// 设置columnKey 是否间隔显示// domainAxis.setSkipCategoryLabelsToFit(true);plot.setDomainAxis(domainAxis);// 设置柱图背景色(注意,系统取色的时候要使用16位的模式来查看颜色编码,这样比较准确)plot.setBackgroundPaint(new Color(255, 255, 204));// y轴设置V alueAxis rangeAxis = plot.getRangeAxis();rangeAxis.setLabelFont(labelFont);rangeAxis.setTickLabelFont(labelFont);// 设置最高的一个Item 与图片顶端的距离rangeAxis.setUpperMargin(0.15);// 设置最低的一个Item 与图片底端的距离rangeAxis.setLowerMargin(0.15);plot.setRangeAxis(rangeAxis);BarRenderer renderer = new BarRenderer();// 设置柱子宽度renderer.setMaximumBarWidth(0.05);// 设置柱子高度renderer.setMinimumBarLength(0.2);// 设置柱子边框颜色renderer.setBaseOutlinePaint(Color.BLACK);// 设置柱子边框可见renderer.setDrawBarOutline(true);// // 设置柱的颜色renderer.setSeriesPaint(0, new Color(204, 255, 255));renderer.setSeriesPaint(1, new Color(153, 204, 255));renderer.setSeriesPaint(2, new Color(51, 204, 204));// 设置每个地区所包含的平行柱的之间距离renderer.setItemMargin(0.0);// 显示每个柱的数值,并修改该数值的字体属性renderer.setIncludeBaseInRange(true);renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); renderer.setBaseItemLabelsVisible(true);plot.setRenderer(renderer);// 设置柱的透明度plot.setForegroundAlpha(1.0f);FileOutputStream fos_jpg = null;try{isChartPathExist(CHART_PA TH);String chartName = CHART_PA TH + charName;fos_jpg = new FileOutputStream(chartName);ChartUtilities.writeChartAsPNG(fos_jpg, chart, 500, 500, true, 10);return chartName;}catch (Exception e){e.printStackTrace();return null;}finally{try{fos_jpg.close();}catch (Exception e){e.printStackTrace();}}/*** 横向图** @param dataset 数据集* @param xName x轴的说明(如种类,时间等)* @param yName y轴的说明(如速度,时间等)* @param chartTitle 图标题* @param charName 生成图片的名字* @return*/public String createHorizontalBarChart(CategoryDataset dataset,String xName, String yName, String chartTitle, String charName){JFreeChart chart = ChartFactory.createBarChart(chartTitle, // 图表标题xName, // 目录轴的显示标签yName, // 数值轴的显示标签dataset, // 数据集PlotOrientation.VERTICAL, // 图表方向:水平、垂直true, // 是否显示图例(对于简单的柱状图必须是false)false, // 是否生成工具false // 是否生成URL链接);CategoryPlot plot = chart.getCategoryPlot();// 数据轴精度NumberAxis vn = (NumberAxis) plot.getRangeAxis();//设置刻度必须从0开始// vn.setAutoRangeIncludesZero(true);DecimalFormat df = new DecimalFormat("#0.00");vn.setNumberFormatOverride(df); // 数据轴数据标签的显示格式CategoryAxis domainAxis = plot.getDomainAxis();domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // 横轴上的// LableFont labelFont = new Font("SansSerif", Font.TRUETYPE_FONT, 12);domainAxis.setLabelFont(labelFont);// 轴标题domainAxis.setTickLabelFont(labelFont);// 轴数值domainAxis.setMaximumCategoryLabelWidthRatio(0.8f);// 横轴上的Lable 是否完整显示// domainAxis.setV erticalCategoryLabels(false);plot.setDomainAxis(domainAxis);V alueAxis rangeAxis = plot.getRangeAxis();// 设置最高的一个Item 与图片顶端的距离rangeAxis.setUpperMargin(0.15);// 设置最低的一个Item 与图片底端的距离rangeAxis.setLowerMargin(0.15);plot.setRangeAxis(rangeAxis);BarRenderer renderer = new BarRenderer();// 设置柱子宽度renderer.setMaximumBarWidth(0.03);// 设置柱子高度renderer.setMinimumBarLength(30);renderer.setBaseOutlinePaint(Color.BLACK);// 设置柱的颜色renderer.setSeriesPaint(0, Color.GREEN);renderer.setSeriesPaint(1, new Color(0, 0, 255));// 设置每个地区所包含的平行柱的之间距离renderer.setItemMargin(0.5);// 显示每个柱的数值,并修改该数值的字体属性renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); // 设置柱的数值可见renderer.setBaseItemLabelsVisible(true);plot.setRenderer(renderer);// 设置柱的透明度plot.setForegroundAlpha(0.6f);FileOutputStream fos_jpg = null;try{isChartPathExist(CHART_PA TH);String chartName = CHART_PA TH + charName;fos_jpg = new FileOutputStream(chartName);ChartUtilities.writeChartAsPNG(fos_jpg, chart, 500, 500, true, 10);return chartName;}catch (Exception e){e.printStackTrace();return null;}finally{try{fos_jpg.close();}catch (Exception e){e.printStackTrace();}}}/*** 饼状图** @param dataset 数据集* @param chartTitle 图标题* @param charName 生成图的名字* @param pieKeys 分饼的名字集* @return*/public String createV alidityComparePimChar(PieDataset dataset,String chartTitle, String charName, String[] pieKeys){JFreeChart chart = ChartFactory.createPieChart3D(chartTitle, // chart// titledataset,// datatrue,// include legendtrue, false);// 使下说明标签字体清晰,去锯齿类似于//chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.V ALUE_TEXT_ANTIALIAS_OFF);的效果chart.setTextAntiAlias(false);// 图片背景色chart.setBackgroundPaint(Color.white);// 设置图标题的字体重新设置titleFont font = new Font("隶书", Font.BOLD, 25);TextTitle title = new TextTitle(chartTitle);title.setFont(font);chart.setTitle(title);PiePlot3D plot = (PiePlot3D) chart.getPlot();// 图片中显示百分比:默认方式// 指定饼图轮廓线的颜色// plot.setBaseSectionOutlinePaint(Color.BLACK);// plot.setBaseSectionPaint(Color.BLACK);// 设置无数据时的信息plot.setNoDataMessage("无对应的数据,请重新查询。

JFreeChart_介绍

JFreeChart_介绍




下载 解包 运行演示示例 编译源代码 产生JavaDoc文档
下载完JFreeChart压缩文件之后,我们需要将 该压缩文件解开。我们可以将文件解压到指定 的目录下面。 Linux/Unix环境下解压 Windows环境下解压 文件目录说明
在Linux/Unix环境下解压文件,使用下面命 令: Tar xvzf jfreechart-1.0.x.tar.gz 该命令将JFreeChart所有的文件包括源代码, 运行jar文件和doc文档解压到JFreeChart目录 下面
解压后的jfreechart目录下面,有许多文件和文 件夹,列表如下:
应当花一部分时间来熟悉这些文件,并详细阅 读README.txt文件。



下载 解包 运行演示示例 编译源代码 产生JavaDoc文档
在解压的文件中,有一个实例演示应用包含了 JFreeChart产生的大量图表演示示例。输入下 面命令可以运行该应用: Java –jar jfreechart-1.0.x-demo.jar 实例的源代码跟JFreeChart开发指南一并发 行,是收费的







介绍 饼图(Pie Charts) 直方条形图(Bar Charts) 折线图(Line Charts) XY(散点图) 时序图 柱状图 面积图 差异图



梯形图 甘特图 多轴图 复合/覆盖图 开发远景
有许多使用JFreeChart创建的图表实例,对 JFreeChart产生的图表类型做了概述,运行实 例命令如下: java -jar jfreechart-1.0.6-demo.jar
可以使用一个InternalXYDataset(XYDataset的 另一个扩展)数据产生柱状图:

jFreeChart图形显示设置(柱状图)

jFreeChart图形显示设置(柱状图)
3.5f,//设置柱的Outline颜色
custombarrender3d.setSeriesOutlinePaint(0,
2.3f,
4.5f));//标签显示与设定位置的距离
custombarrender3d.setItemLabelAnchorOffset(10D);//设置每个基站所包含的平行柱的之间距离
BarRender3D是Render的一个实现类。在这个类中包含对3D柱状图的数据区的显示设置。BarRender3D含有3D背景的设置、柱体的设置、柱体间距的设置等等,例如:
//3D柱状图显示设置对象
BarRender3D render3d =newBarRender3D();// 3D坐标轴的墙体颜色
TextTitle title = chart.getTitle();
//设置chart图标题的字体
title.setFont(newFont("黑体", Font.CENTER_BASELINE, 24));//X轴字体
CategoryAxis domainAxisTemp = plot.getDomainAxis();
privateJFreeChart createChartPole(CategoryDataset dcd) {//构造基本的JFreeChart
setTitle(Title);
setXAxisTitle(x);
setYAxot = (CategoryPlot)chart.getPlot();
custombarrender3d.setSeriesItemLabelFont(1, new Font("宋体",//各柱体的宽度
custombarrender3d.setMaximumBarWidth(

jFreeChart图形显示设置(柱状图)

jFreeChart图形显示设置(柱状图)

jFreeChart图形显示设置(柱状图)说明表源代码://BarRenderer3Dprivate JFreeChart createChartPole(CategoryDataset dcd) { // 构造基本的JFreeChartsetTitle(Title);setXAxisTitle(x);setYAxisTitle(y);JFreeChart chart = ChartFactory.createBarChart3D(getTitle(), getXAxisTitle(), getYAxisTitle(), dcd,PlotOrientation.VERTICAL, true, true, false);CategoryPlot plot = (CategoryPlot)chart.getPlot();BarRenderer3D custombarrenderer3d = new BarRenderer3D();//设置图例LegendTitle legtitle = chart.getLegend();//设置图例字体legtitle.setItemFont(new Font("黑体", Font.ROMAN_BASELINE, 15));//取得chart图的标题TextTitle title = chart.getTitle();//设置chart图标题的字体title.setFont(new Font("黑体", Font.CENTER_BASELINE, 24));//X轴字体CategoryAxis domainAxisTemp = plot.getDomainAxis();domainAxisTemp.setLabelFont(new Font("黑体", Font.ROMAN_BASELINE, 12));//设置x轴各项标题的字体domainAxisTemp.setTickLabelFont(new Font("黑体",Font.ROMAN_BASELINE, 12));domainAxisTemp.setTickLabelPaint(Color.BLUE);//Y轴字体ValueAxis rangeAxis = plot.getRangeAxis();rangeAxis.setLabelFont(new Font("黑体", Font.ROMAN_BASELINE, 12));//custombarrenderer3d.setBaseOutlinePaint(Color.blue);custombarrenderer3d.setWallPaint(Color.lightGray);// 3D坐标轴的墙体颜色custombarrenderer3d.setMinimumBarLength(0.01);custombarrenderer3d.setMaximumBarWidth(0.05);//控制X轴坐标点文字角度当X轴的坐标点超过15个时,文字角度调整为45度向上if(dcd.getColumnCount() > 8){chart.getCategoryPlot().getDomainAxis().setCategoryLabelPositions (CategoryLabelPositions.DOWN_45);// 设置坐标点标记与坐标轴之间的距离//jfreechart.getCategoryPlot().getDomainAxis().setCategoryLabelPosi tionOffset(50);//jf.getCategoryPlot().getDomainAxis().setCategoryLabelPositions(Ca tegoryLabelPositions.createUpRotationLabelPositions(Math.PI/6));}// 显示每个柱的数值,并修改该数值的字体属性<BR>custombarrenderer3d.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());// custombarrenderer3d.setBaseItemLabelFont(new Font("黑体", Font.ROMAN_BASELINE, 12));custombarrenderer3d.setBaseItemLabelFont(new Font("黑体", Font.CENTER_BASELINE, 15));//是否显示柱的数值标签custombarrenderer3d.setBaseItemLabelsVisible(true);// 每个柱的数值,标签显示的方式及位置custombarrenderer3d.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,TextAnchor.BASELINE_CENTER));// 标签显示与设定位置的距离custombarrenderer3d.setItemLabelAnchorOffset(10D);// 设置每个基站所包含的平行柱的之间距离custombarrenderer3d.setItemMargin(0.05D);// 设置柱的颜色custombarrenderer3d.setSeriesPaint(0,Color.getHSBColor(3.5f, 2.3f, 4.5f));// 设置柱的 Outline 颜色custombarrenderer3d.setSeriesOutlinePaint(0, Color.BLACK);//为单个柱体设置字体,"1"为柱体的序号// custombarrenderer3d.setSeriesItemLabelFont(1, new Font("宋体", Font.CENTER_BASELINE, 72));// 各柱体的宽度custombarrenderer3d.setMaximumBarWidth(0.050000000000000003D);plot.setRenderer(custombarrenderer3d);return chart;}。

JFreeChart介绍

JFreeChart介绍

三、创建图表对象JFreeChart 创建图表对象
CategoryDataset dataset = getDataSet(); JFreeChart jfreechart = ChartFactory.createBarChart3D(“图表标题”, “目录轴的显 图表标题” 目录轴的显 图表标题 示标签", 数值轴的显示标签 数值轴的显示标签", 示标签 "数值轴的显示标签 dataset, PlotOrientation.VERTICAL, false, false, false); // 其中的八个参数分别代表:图形的标题、X 轴标题、Y 轴标题、 CategoryDataset 其中的八个参数分别代表:图形的标题、 轴标题、 轴标题、 // 类的实例对象、显示标题、启用热键、启用超键接。 类的实例对象、显示ublic class jfree extends ApplicationFrame{ private CategoryDataset getDataSet() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dbConn db=new dbConn(); ResultSet rs=db.getRs("select Number,ProductName from Sale"); DefaultCategoryDataset dataset = new DefaultCategoryDataset(); try { while(rs.next()){ dataset.addValue(rs.getInt("Number"), "", rs.getString("ProductName")); } } catch (SQLException e) { e.printStackTrace(); } } public jfree(String title) { 。。。。。 } public static void main(String[] args) { jfree j=new jfree(“水果产量图 水果产量图"); 水果产量图 } }

JFreeChart课件

JFreeChart课件
北京传智播客教育



—高级软件人才实作培训专家! JFreeChart简介

注意: JFreechart的类结构设计前后兼容性不是很好,不同版本 的JFreechart中类库结构可能不一样,有时候可能需要查 源码。 如果是中文显示的时候可能依据观感需要改变源码的字体。 但是jfreechart的开发文档是收费的
北京传智播客教育
—高级软件人才实作培训专家! JFreeChart 核心类库介绍
Plot 对象 1.定义:Plot 对象是图形的绘制结构对象。 2.组成:JFreeChart 中有 18 种 Plot 抽象类的具体实现类,每一种图形 对象中的 Plot 对象都在实例化的时候创建。 Plot 的具体实现类主要由以下重要对象组成: * Renderer 对象(图形的绘制单元——绘图域) * Datset (图形的数据源), * DomainAxis (区域轴,相当于 x 轴), * RangeAxis (范围轴,相当于 y 轴)。 不同的 Plot 对象组成方式不尽相同。 * 有的不含有 Renderer 对象,比如 CompassPlot 、 ContourPlot 、 Mult iplePiePlot 、 PiePlot 等, * 有的不含有 DomainAxis 、 RangeAxis 对象,
北京传智播客教育
—高级软件人才实作培训专家! JFreeChart 核心类库介绍

Axis对象 1.组成:JFreeChart提供了两种类型的坐标轴: CategoryAxis (等级轴 x)和 ValueAxis (值轴 y), * ValueAxis 又有 3 个子类: DateAxis (时间轴)、 NumberAxis (数字轴)、 PeriodAxis (时期轴)。 * 这些坐标轴还有更详细的子类,不再一一列举。 2.设置: * 标题的设置(内容、字体、Paint、显示角度等)、 * 坐标线的设置(笔画、Paint、是否可见等)、 * 刻度线的设置(是否可见、笔画、Paint、位于绘图区域的长度、位 于绘图区域外的长度等)、 * 刻度标示的设置(笔画、Paint、字体、与轴的距离等)、* * 坐标轴范围设置等。

Jfreechart 图表开发文档

Jfreechart 图表开发文档

Jfreechart 图表开发文档目标简介:只要按要求写好sql 语句就能生成相应的图表。

实现步骤:1.置图表属性2.写sql 语句3.取图表数据对象4.生成图表5.显示图表详细说明:1.置图表属性图表属性类中定义了图表的属性信息,如,图表标题,图表热链接,是否3D效果显示code:String title = "统计图2";ChartProperty cp = new ChartProperty(title);cp.setChart3D(false);cp.setHitUrl("/servlet/_test");2.写sql 语句sql语句要求:饼型图,柱型图要求sql 语句的select 字段,第一个为String 型,第二个为number 型,曲线图第一个字段要求为日期型,第二个字段为number型,可以有第三个字段,第四个字段…..(n个)这个可生成多曲线图表。

code:1.String sql = "select basepricetype, sum(saleprice)" +" from tb_builsrc_contractinfo" +" where affirm_date >= to_date('2004-06-01', 'yyyy-MM-dd') and" +" affirm_date <= to_date('2004-06-02', 'yyyy-MM-dd')" +" group by basepricetype";2.sql = "select affirm_date, baseprice, saleprice" +" from tb_builsrc_contractinfo" +" where affirm_date >= to_date('2004-06-01 00:00:00', 'yyyy-MM-dd HH24:mi:SS') and " +" affirm_date <= to_date('2004-06-01 23:59:59', 'yyyy-MM-dd HH24:mi:SS')" +" order by affirm_date ";3.取图表数据对象生成不同图表所在生成的jfreechart 数据对象不同,jfreechart提供三个接口,饼型图为,PieDataset,要柱型图为CategoryDataset, 曲线图为XYDataset,同时在交易系统包中提供有DbChartCenter类,静态封装生成不同图表。

基于JFreeChart与ArcGIS JavaScript API的专题制图

基于JFreeChart与ArcGIS JavaScript API的专题制图

基于JFreeChart与ArcGIS JavaScript API的专题制图曾文华;赵飞;任福;杜清运【期刊名称】《测绘科学技术学报》【年(卷),期】2012(29)6【摘要】基于目前迅速发展的WebGIS技术,结合专题地图智能应用的特点,提出了一种JFreeChart图表组件与ArcGIS JavaScript API相结合动态制作网络专题图的方法.该方法利用JFreeChart强大的图表引擎功能,在服务器端构建统计符号库,以JSON和XML等形式获取专题统计数据,根据统计数据特征自动选择适宜表达方式,生成统计符号后与客户端请求的WMS或WFS服务图层叠加生成专题图.以浙江省在线动态专题地图制作软件为例,对JFreeChart与ArcGIS JavaScript API结合制作网络专题图进行了应用.实践表明,此方法以网络服务形式提供,动态制图功能扩展更灵活,统计符号类型丰富,能满足不同专业背景用户的制图需求,体现了专题地图智能化的应用.%A new method for Web cartography, which using ArcGIS JavaScript API combined a chart component named JFreeChart, was put forward to make thematic mapping easier in the context of Web. According to this method, the statistic map symbol base was constructed based on JFreeChart in the server end and the statistic data was transferred to the server by the form of JSON and XML, then the appropriate visualization expression was pushed on the basis of the characteristics of statistical data and diagrams were constructed. Finally, a complete thematic map was composed of diagrams from server and some geographic base maps in the client. At last, Zhejiang Online dynamicthematic map production software was taken as an example to show the application of various technique of Web visualization of statistic data based on this method. It showed that the visualization system and method of visualization functions were worthy of spreading.【总页数】4页(P450-453)【作者】曾文华;赵飞;任福;杜清运【作者单位】浙江省测绘科学研究院,浙江杭州 310012;武汉大学资源与环境科学学院,湖北武汉430079;武汉大学资源与环境科学学院,湖北武汉430079;武汉大学资源与环境科学学院,湖北武汉430079【正文语种】中文【中图分类】P285;TP393【相关文献】1.基于ECharts与ArcGIS JavaScript API的Web专题制图研究 [J], 张惜杰;李平;张志强;马炅妤;唐涛2.基于ArcGIS API for JavaScript的金安区公路路网建库系统的设计与实现 [J], 夏竹青;王竹婷3.基于ArcGIS API for JavaScript的地震人口热力图快速出图技术 [J], 赵影;黄仁桂;肖健;侯建民;鲍志诚;陶鑫;李雨泽4.基于ArcGIS API for JavaScript的路径规划方法实现 [J], 钟立明;景宁;熊伟5.基于ArcGIS API for JavaScript的辅助决策地图变化信息联动系统开发 [J], 方川;黄洪纤因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、JFreechart剖析
1.4 生成图表 图表
• • • • • 建立Dataset。所有的数据都存放在Dataset中的。(创建一个数据源(dataset)来 包含将要在图形中显示的数据) 建立JFreeChart。将dataset中的数据导入到JFreeChart中。(创建一个 JFreeChart 对 象来代表要显示的图形 ) 设置JFreeChart的显示属性。这一步可以省略,使用默认的JFreeChart显示属性 渲染图表。即生成图片 页面图片显示
2、专题符号实现
2.2 流程
• 解析客户端请求,获取当前请求图幅、图表类型、时间等参数 • 根据图表类型调用工厂类生成相应的图表对象 • 判断当前范围内的符号个数,并读取相应数据装载到Dataset接口 • 生成在当前范围内的各个JFreechart对象,根据符号定位点坐标绘制成一 幅透明的PNG图片,同时生成map标签,传送到客户端
1、JFreechart剖析
1.5 示例
2、专题符号实现
2.1 类结构
2、专题符号实现
2.1 类结构
• TChart类
– TChart类为专题符号的抽象基类,定义了符号的共同参数 – JFreechart对各种图表没有抽象出继承关系,只是用一个静态工厂类的静态方法来 生成多种JFreechart对象;专题符号各子类的继承关系如下:
• JFreeChart对象
– JFreeChart 库中最重要的类之一是它本身,名为 JFreeChart – JFreeChart 可以生成很多图形对象,它的工厂类提供了 33 个工厂方法 ( ChartFactory 类 )用于生成不同的图形对象 – 图形对象(JFreeChart) ,由主标题 (Title) ,子标题 (SubTitle) ,图形的绘制结 构(Plot),图例(Legend)等几个主要对象组成 – 每个 JFreeChart 对象只能有 1 个 Title 对象, 1 个 Plot 对象,可以有多 个 SubTitle 对象。 JFreeChart 对象可以进行的操作有:背景的设置(背景颜 色、背景图片、透明度等)、边框的设置(是否可见、笔画、 Paint 等)、渲 染方式的设置、标题对象的设置、子标题对象的增删查操作。
JFreeChart与专题符号
1、JFreechart剖析 2、专题符号实现
1、JFreechart剖析
1.1 简介
• 开源的Java图形开发包,可以实现饼图、柱状图、线图、点图、时序图、 甘特图、股票行情图、混和图 、温度计图、刻度图等常用商用图表 • 最新版本为JFreeChart 1.0.13,可以到/jfreechart/premium/download.html下载源代码及开发帮助文档 • 解压jfreechart-1.0.13.zip到指定位置,其中lib是包目录,source是jfreechart 的源码,jfreechart-1.0.13-demo.jar 是例子程序,开发时候加入下面三个jar 包:jfreechart-1.0.13.jar 、jcommon-1.0.13.jar、gnujaxp.jar
1、JFreechart剖析
1.2 基本结构
• JFreeChart常用的API大致可以分为Dataset、Plot、Axis、Renderer、 JFreeChart、URLGenerator、ToolTipGenerator、ChartFactory几大类
1、JFreechart剖析
1.3 图形对象
1、JFreechart剖析
1.3 图形对象的处理
• Axis对象
– JFreeChart 提供了两种类型的坐标轴: CategoryAxis (类别轴)和 ValueAxis (值 轴),RangeAxis 又有 3 个子类: DateAxis (时间轴)、 NumberAxis (数字 轴)、 PeriodAxis (时期轴) – Axis 对象可进行的操作有:坐标轴标题的设置、坐标线的设置(笔画、Paint、是 否可见等)、刻度线的设置(是否可见、笔画、Paint、位于绘图区域的长度、位 于绘图区域外的长度等)、刻度标示的设置(笔画、Paint、字体、与轴的距离 等)、坐标轴范围设置等 – CategoryAxis 对象还可以进行的操作有: 刻度标示间距设置( 最小间距、最大间 距、指定间距)等 – ValueAxis 对象可进行的操作有:轴端设置(显示的图形形状)、范围设置(是否 自动产生范围、自动产生的最小范围、最大范围、指定确定范围、指定范围大小 等)、间隔设置(是否自动产生间隔、指定间隔)等 – DateAxis 对象还有对时间刻度显示格式的设置操作
1、JFreechart剖析
1.3 图形对象的处理
• Plot对象
– 图形的绘制结构对象。图形对象包含多种不同的Plot对象,每个Plot对象都在实例 化的时候创建。所有的Plot共有的操作有:背景设置、前景透明度设置、无数据存 在情况的设置、放大缩小比例的设置,大部分 Plot 对象还有设置 Datset 、设 置 Renderer 对象操作 – Plot 的具体实现类主要由以下重要对象组成: 渲染对象(Renderer),数据源 (Dataset) ,区域轴(DomainAxis,相当于 x 轴) ,范围轴(RangeAxis,相当于 y 轴)ห้องสมุดไป่ตู้– 不同的 Plot 对象组成方式不尽相同,一般都含有 Datset 对象。饼状图相关 的 Plot 对象(MultiplePiePlot 、 PiePlot 、 PiePlot3D 、 RingPlot)中都不含 有 Renderer 对象、 DomainAxis 对象、 RangeAxis 对象
1、JFreechart剖析
1.3 图形对象的处理
• Renderer对象
– 图形的渲染对象。 JFreeChart 提供了两个接 口 CategoryItemRenderer 和 XYItemRenderer 、 1 个抽象类 AbstractRenderer 供具体 的 Renderer 类实现,给出了将近 50 种具体实现类 – Renderer 对象可进行的操作有:对 item label 的默认设置、绘制图形的边框默认设 置、绘制图形的默认设置、以及对指定 item label 的设置、指定绘制图形的设置。 与具体绘制的图形相关的属性都可以通过 Renderer 对象设置 – 不同的 Renderer 的实现类实现了不同的显示方式,在含有 Renderer 对象 的 JFreeChart 对象中, Renderer 对象决定了JFreeChart对象的显示方式。例如:柱 状图的Plot对象中默认的Renderer对象是 BarRenderer 对象,通过设置 Plot 对象的 Renderer对象为 LineAndShapeRenderer ,则柱状图变为线图。使用中一般不需要 显式的实例化一个 Renderer 对象,一般通过 JFreeChart 对象的 Plot 对象调用现有 的 Renderer 对象进行重新设置等操作
1、JFreechart剖析
1.3 图形对象的处理
• Dataset接口
– 定义了产生图表时所需要的数据结构,有三个主要的子类接口:CategoryDataset、 PieDataset、SeriesDataset – CategoryDataset 接口的实现类维护一个三元组<value,row,col>的列表结构。不同的 实现类中value 的类型不相同。<row,col>唯一确定一个三元组。CategoryDataset的 实现类提供对这个三元组的增删改查操作 – PieDataset 接口的实现类维护一个二元组<key,value>的列表结构。Key唯一确定一 个二元组。 PieDataset的实现类提供对这个二元组的增删改查操作。可通过对 CategoryDataset类型的对象指定行或者列转化为一个二元组 – SeriesDataset 接口的实现类维护一种特定数据结构的列表。以TimeSeriesCollection 为例。它维护一个TimeSeries对象列表,提供对该列表的增删查操作。每个 TimeSeries对象维护一个<time,value>列表,提供对该列表的增删改查操作
谢谢!
2、专题符号实现
2.1 类结构
• JThematicChart类
– 专题符号的实施类,对应于图集中的一幅插图,包含数据集对象、图例对象、标 注对象等,根据客户端请求读取数据库填充数据集对象,根据系统配置文件初始 化图例对象、标注对象,调用工厂类生成专题符号,并绘制为图片返回客户端
PropertiesUtil p = new PropertiesUtil(); Properties properties=p.getProperties(); String symbolFactory=properties.getProperty(String.valueOf(chartType)); ISymbolFactory iSymbolFactory=(ISymbolFactory) Class.forName(symbolFactory).newInstance(); ISymbol iSymbol=iSymbolFactory.createSymbol();
2、专题符号实现
2.1 类结构
• ISymbol接口及ISymbolFactory接口
– ISymbol为符号绘制的接口,其方法包含drawSymbol、drawLegend等 – TChart类及其子类实现了ISymbol接口 – 每个chart子类对应一个工厂类,用于生成该类的实例,该工厂类实现了 ISymbolFactory接口 – ISymbolFactory用于生成ISymbol接口,进而调用不同的符号对象生成符号
相关文档
最新文档