`
flashdream8
  • 浏览: 680740 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JFreeChart柱状图饼图

阅读更多

JFreeChart目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求,主要包括如下几个方

面:
    pie charts (2D and 3D):饼图(平面和立体)
    bar charts (regular and stacked, with an optional 3D effect):柱状图
    line and area charts:曲线图
    scatter plots and bubble charts
    time series, high/low/open/close charts and candle stick charts:时序图
    combination charts:复合图
    Pareto charts
    Gantt charts:甘特图
    wind plots, meter charts and symbol charts
    wafer map charts
         (态图表,饼图(二维和三维) , 柱状图 (水平,垂直),线图,点图,时间变化图,甘特图, 股票行情

图,混和图, 温度计图, 刻度图等常用商用图表)
          图形可以导出成PNG和JPEG格式,同时还可以与PDF和EXCEL关联

          研究jfreechart源码发现源码的主要由两个大的包组成:org.jfree.chart,org.jfree.data。

其中前者主要与图形
本身有关,后者与图形显示的数据有关。

           核心类主要有:
           org.jfree.chart.JFreeChart:图表对象,任何类型的图表的最终表现形式都是在该对象进

行一些属性的定制。JFreeChart引擎本身提供了一个工厂类用于创建不同类型的图表对象
           org.jfree.data.category.XXXDataSet:数据集对象,用于提供显示图表所用的数据。根据不

同类型的图表对应着很多类型的数据集对象类
           org.jfree.chart.plot.XXXPlot:图表区域对象,基本上这个对象决定着什么样式的图表,

创建该对象的时候需要Axis、Renderer以及数据集对象的支持
           org.jfree.chart.axis.XXXAxis:用于处理图表的两个轴:纵轴和横轴
           org.jfree.chart.render.XXXRender:负责如何显示一个图表对象
           org.jfree.chart.urls.XXXURLGenerator:用于生成Web图表中每个项目的鼠标点击链接
           XXXXXToolTipGenerator:用于生成图象的帮助提示,不同类型图表对应不同类型的工具提示

 

1 柱状图

          org.jfree.chart.ChartFactory这个工厂类有createBarChart、createStackedBarChart、

createBarChart3D、createStackedBarChart3D,这几个工厂方法创建不同类型的柱状图,比较重要的是

PlotOrientation.VERTICAL 让平行柱垂直显示,而 PlotOrientation.HORIZONTAL 则让平行柱水平显示

。对柱状图影响较大的几个类包括:org.jfree.chart.axis.CategoryAxis、

org.jfree.chart.axis.ValueAxis、org.jfree.chart.renderer.BarRenderer、

org.jfree.chart.renderer. BarRenderer3D。

具体实现步骤:

1)创建用于图形生成所要的数据集对象。

CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data)

其中:rowKeys表示X轴数据,columnKeys表示Y轴数据,data表示填充柱状图所要的实际数据(来自于数

据库)。

2)创建图形对象。

JFreeChart chart = ChartFactory.createBarChart3D("标题", null,null,dataset,

PlotOrientation.VERTICAL,,true,false,false);

createBarChart3D方法是ChartFactory工厂类里的一个方法,用于3D柱状图的生成,该类继承自

JFreeChart。其中的八个参数分别代表:图形的标题、X轴标题、Y轴标题、dataset就是CategoryDataset

类的实例对象、显示标题、启用热键、启用超键接。

3)设置图形显示的属性。

a ) ValueAxis类,设置柱到图上下边的距离。实现方法是:

ValueAxis rangeAxis = plot.getRangeAxis();

设置最高的一个柱与图片顶端的距离:

rangeAxis.setUpperMargin(0.15)

设置最低的一个柱与图片底端的距离:

rangeAxis.setLowerMargin(0.15)

b)org.jfree.chart.renderer.BarRenderer3D类,设置图形上显示的数值。实现方法如下:

BarRenderer3D renderer = new BarRenderer3D();

renderer.setBaseOutlinePaint(Color.BLACK);

设置 Wall 的颜色:

renderer.setWallPaint(Color.gray);

设置每个柱的颜色:

renderer.setSeriesPaint(0, new Color(0, 0, 255));

renderer.setSeriesPaint(1, new Color(0, 100, 255));

renderer.setSeriesPaint(2, Color.GREEN);

设置每个柱的 Outline 颜色
renderer.setSeriesOutlinePaint(0, Color.BLACK);

renderer.setSeriesOutlinePaint(1, Color.BLACK);

renderer.setSeriesOutlinePaint(2, Color.BLACK);

设置每个地区所包含的平行柱之间的距离
renderer.setItemMargin(0.1);

显示每个柱的数值,并修改该数值的字体属性

renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());

renderer.setItemLabelFont(new Font("黑体",Font.PLAIN,12));

renderer.setItemLabelsVisible(true);

为图形加入超连接

renderer.setItemURLGenerator(new StandardCategoryURLGenerator());

renderer.setToolTipGenerator(new StandardCategoryToolTipGenerator());

2 饼图

org.jfree.chart.plot包,包含创建饼形图的所有方法和属性。

笔者根据业务需求创建了setURLGenerator(PieURLGenerator generator)方法,在图片上建立连接,就是

图片不同部分连接不同的资源。

setSectionLabelType(int type)方法:

指定 section 标签的类型,共有 7 种类型。如果不指定,默认是 NAME_LABELS,其中类型分别是:

PiePlot.NO_LABELS

PiePlot.NAME_LABELS

PiePlot.VALUE_LABELS

PiePlot.PERCENT_LABELS 、PiePlot.NAME_AND_VALUE_LABELS、PiePlot. NAME_AND_PERCENT_LABELS、

PiePlot.VALUE_AND_PERCENT_LABELS。

setDefaultOutlinePaint(java.awt.Paint paint)方法,指定 section 轮廓线的颜色,如果不指定,默

认值为NULL。

setDefaultOutlineStroke(java.awt.Stroke stroke)方法,指定 section 轮廓线的厚度。

setRadius(double percent) 和 setExplodePercent(int section, double percent)方法,抽离

section,就是把某一section从饼形图剥离出来,需要两个方法一起使用。

setStartAngle(double angle)方法,设置第一个section开始位置,默认从12点钟方向开始。

setPaint(int section, java.awt.Paint paint)方法指定section的颜色。

setDirection(int direction)方法指定section顺序,默认是顺时针方向。顺时针:PiePlot.CLOCKWISE

;逆时针:PiePlot.ANTICLOCKWISE。

具体实现步骤:

1)创建用于图形生成所要的数据集对象。

首先实例化类DefaultPieDataset dataset = new DefaultPieDataset()。然后利用DefaultPieDataset类

提供的setValue(value1,value2)方法,把从数据库里提取的数据存入DefaultPieDataset对象。其中

value1是数据名称、value2是数据值。

2)创建图形对象。

首先实例化JFreeChart chart = ChartFactory.createPieChart3D(title, dataset, true, true,

false)createPieChart3D方法是用于饼图生成的主要方法。其中title代表图形的标题、dataset就是

DefaultPieDataset对象的实例。

3)设置图形显示的属性。

String filename = ServletUtilities.saveChartAsPNG(jFreeChart, 700, 450, info, session);

ChartUtilities.writeImageMap(pw, filename, info);

pw.flush()

saveChartAsPNG方法在ServletUtilities工厂类定义完成。主要用于把图形对象JFreeChart以图片的形式

保存。其中的jFreeChart就是JFreeChart对象的实例。该方法返回一个文件名。

writeImageMap(pw, filename, info)方法用于把保存的图片文件以字节流的形式写入用户界面。

其中pw是java.io包的PrintWriter类的实例对象,该对象创建一个图形输出流。Filename是输出图片的文

件名。该文件名来自ServletUtilities.saveChartAsPNG方法创建。

参数info用于图形信息的显示。

用ChartRenderingInfo info=new ChartRenderingInfo(new StandardEntityCollection())创建。

最后输出完成图形,调用pw.flush()方法关闭IO流。

分享到:
评论

相关推荐

    JfreeChart柱状图饼图

    **JFreeChart——柱状图与饼图详解** 在Java编程中,JFreeChart库是一个强大的图表绘制工具,它能够帮助开发者创建出多种类型的图表,包括柱状图、饼图等,广泛应用于数据分析和可视化展示。这篇博文中,我们将深入...

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

    JFreeChart是一个流行的Java库,用于生成各种类型的图表,包括折线图、饼图和柱状图,甚至堆栈柱状图。这个压缩包中的"CreateChartServiceImpl.java"文件很可能包含了一个实现这些功能的服务类。 首先,我们要理解...

    jfreechart曲线图饼图柱状图 免费图标 图表

    JFreeChart是一款强大的Java图表库,它为开发者提供了丰富的图形绘制功能,包括曲线图、饼图和柱状图等。这个库是免费的,适用于各种项目,无论是商业应用还是个人学习,都能从中受益。在本篇文章中,我们将深入探讨...

    jfreechart 图形折线,饼图,柱状图等

    JFreeChart 是一个广泛使用的开源 Java 图形库,它允许开发人员轻松地创建各种图表,包括折线图、饼图和柱状图。这个库为 Java 应用程序提供了丰富的图表功能,适用于数据可视化的需求,无论是简单的报告还是复杂的...

    利用JFreeChart 实现柱状图,饼图,时序图,折线图等

    在Java编程环境中,JFreeChart库是一个非常强大的工具,它允许开发者轻松地创建各种图表,如柱状图、饼图、时序图和折线图等。这些图表在数据分析、报表展示以及各种可视化应用中非常常见。下面我们将详细介绍如何...

    自定义JFreeChart柱状图的详细说明

    综上所述,自定义JFreeChart柱状图涉及了数据准备、渲染器配置、外观调整、标签和提示信息等多个方面。通过深入理解这些知识点,开发者可以创建出满足各种需求的个性化柱状图。提供的文件如"JFreeChart中柱状图的...

    jfreechart 柱状图、曲线图、饼图经

    JFreeChart是一款强大的Java图形库,它为开发者提供了丰富的图表类型,包括柱状图、曲线图和饼图等,使得在Java应用中展示数据变得更加直观和美观。在本篇文章中,我们将深入探讨如何利用JFreeChart来创建这些图表,...

    java制作jfreechart柱状图 饼状图 折线图

    Java中的JFreeChart库是一个强大的工具,用于生成各种类型的图表,包括柱状图、饼状图和折线图。在本教程中,我们将深入探讨如何使用JFreeChart创建这些图表,以及如何用随机生成的数据作为数据源。 首先,...

    jfreechart 曲线图 3d饼图 3d柱状图

    **JFreeChart库详解:创建3D曲线图、3D饼图和3D柱状图** JFreeChart是一个强大的Java图形库,它提供了多种图表类型,包括曲线图、饼图和柱状图,且支持2D和3D效果。本篇文章将深入探讨如何使用JFreeChart来创建这些...

    java绘制图表(柱状图、饼图、折线图)包 jfreechart

    这个库支持多种图表类型,包括柱状图、饼图和折线图,适用于数据分析、报告生成以及可视化展示等多种场景。在Java开发中,JFreeChart提供了一个简单易用的API,使得开发者可以轻松地将复杂的统计或业务数据转化为...

    jfreechart-1.0.8 饼图等图型

    jfreechart-1.0.8a-swt.jar jfreechart-1.0.8a.jar jfreechart-1.0.8a-experimental.jar jcommon-1.0.12.jar gnujaxp.jar 及网上找到的简单的饼图和柱状图的用例(jfreechart.exe帮助文件)

    JFreeChart 饼图、柱状图 例 (含数据库)

    JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的图表,包括饼图、柱状图等,并且能够与数据库进行交互,为数据分析和可视化提供便利。在这个MyEclipse项目中,你将找到如何利用JFreeChart来实现这些...

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

    jfreechart 生成折线图、饼图、柱状图、堆栈柱状图 jfreechart 是一个功能强大且流行的 Java 图表库,用于生成各种类型的图表,包括折线图、饼图、柱状图、堆栈柱状图等。在本文中,我们将使用 jfreechart 1.0.8a ...

    JFreeChart柱状图资料

    JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的图表,如柱状图、饼图、线图、散点图等,适用于各种数据分析和可视化需求。本资料主要聚焦于JFreeChart在创建柱状图方面的应用。 1. **JFreeChart...

    JFreeChart让单组柱子显示不同的颜色的办法

    在Java编程领域,JFreeChart是一个非常流行的图表库,它提供了丰富的图表类型,如柱状图、饼图、线图等,用于数据可视化。当我们需要创建一个柱状图,并且希望在同一组数据中,每根柱子显示不同的颜色时,JFreeChart...

    jfreechart柱状图

    JFreeChart 是一个流行的开源 Java 图形库,它提供了丰富的图表类型,包括柱状图、饼图、线图、散点图等,广泛应用于数据分析、报告生成以及可视化应用中。这个压缩包提供的源代码示例,展示了如何使用 JFreeChart ...

    JFreeChart柱状图的类的封装

    在这个主题中,我们将深入探讨"JFreeChart柱状图的类的封装",了解如何利用这个库来创建柱状图以及相关的类和工具。 首先,JFreeChart的核心类之一是`CategoryPlot`,它是柱状图的基础。`CategoryPlot`负责管理类别...

    Struts2+JFreeChart 柱状图Demo

    JFreeChart则是一个用Java编写的图表库,可以生成各种类型的图表,如柱状图、折线图、饼图等。在这个Demo中,JFreeChart被用来根据从数据库获取的数据生成柱状图。开发者首先需要通过JDBC连接到MySQL或Oracle数据库...

Global site tag (gtag.js) - Google Analytics