`

深入探究【JFreeChart】数据源处理

阅读更多
3 数据源处理
JFreeChart 中的数据源是DataSet接口类型。该接口有三个主要的子类接口:CategoryDataset、PieDataset、SeriesDataset

CategoryDataset 接口的实现类基本上都维护了一个三元组<value,row,col>的列表结构。不同的实现类中value 的类型不相同。<row,col>唯一确定一个三元组。CategoryDataset的实现类提供对这个三元组的增删改查操作。

PieDataset 接口有两个主要的实现类:CategoryToPieDataset 、DefaultPieDataset。PieDataset接口的实现类基本上都维护了一个二元组<key,value>的列表结构。Key唯一确定一个二元组。CategoryDataset的实现类提供对这个二元组的增删改查操作。CategoryToPieDataset中的二元结构列表通过对CategoryDataset类型的对象指定行或者列转化过来。DefaultPieDataset直接维护一个二元结构列表。

SeriesDataset 接口的实现类基本上都维护了一种特定数据结构的列表。以TimeSeriesCollection为例。它维护一个TimeSeries对象列表,提供对该列表的增删查操作。每个TimeSeries对象维护一个<time,value>列表,提供对该列表的增删改查操作。


三 JFreeChart 中对常见图形的处理
       JFreeChart 并不存在多个不同的类来生成不同的图形。所有的图形都是具体类 JFreeChart 的实例化对象,初始化 JFreeChart 对象的时候通过指定不同的 Plot 实现类就可以显示出不同的图形。不同的 Plot 实现类具有不同的 Renderer 对象、 Axis 对象、 Dataset 对象。

       JFreeChart 提供工厂类 ChartFactory 方便使用者生成各种不同的图形。 ChartFactory 类的各个工厂方法中实现对具体 Plot 的指定以及对类 JFreeChart 构造函数的调用。

       下面以常用图形说一下常用的使用流程(大部分的操作讲的并不全面,比如 JFreeChart 可能提供了很多增加、修改数据的方式,下文中可能只列举一种)。

1 柱状图
( 1 )平面柱状图

       生成柱状图操作:

   
   JFreeChart chart = ChartFactory.createBarChart( 

                      String title,                 // 图标题 

                String categoryAxisLabel,     //x 轴标题 

                String valueAxisLabel,       //y 轴标题 

                CategoryDataset dataset,      // 数据源 

                PlotOrientation orientation,    // 显示方向 

                 boolean legend,             // 是否显示图例 

                 boolean tooltips,            // 是否显示 tooltip 

                 boolean urls) ;              // 是否指定 url 
平面柱状图的 Plot 对象是 CategoryPlot 类型。 CategoryPlot 对象的 x 轴是 CategoryAxis 对象, y 轴是 NumberAxis 对象,绘制单元是 BarRenderer 对象,数据源是 CategoryDataset 对象。

 

获取 CategoryPlot 对象操作为:

CategoryPlot plot = ( CategoryPlot ) chart.getPlot(); 或者 

CategoryPlot plot = chart.getCategoryPlot(); 

获取绘制单元操作:

       BarRenderer renderer = (BarRenderer) plot.getRenderer();

获取 x 轴的操作:

CategoryAxis xAxis = ( CategoryAxis ) plot.getDomainAxis();

获取 y 轴操作:

NumberAxis yAxis = (NumberAxis) plot.getRangeAxis();

获取数据源:

CategoryDataset dataset=plot.getDataset();

 

       柱状图可以接受一切 CategoryDataset 类型的数据源,下面讲解一下常用的 CategoryDataset 类型 DefaultCategoryDataset 的使用方式

实例化:

DefaultCategoryDataset dataset = new DefaultCategoryDataset();

增加数据

dataset .addValue(double value, Comparable rowKey, Comparable columnKey) ;

删除数据:

       dataset .removeValue(Comparable rowKey, Comparable columnKey);

       或者

       dataset. removeColumn(int columnIndex);

       或者

       dataset. removeColumn(Comparable columnKey);

       对行同样有上述两种删除方式,不在列举。

修改数据:

       dataset. setValue(double value, Comparable rowKey, Comparable columnKey);

查询数据 :

对 plot 对象、绘制单元、 x 轴、 y 轴的显示特性修改不再一一介绍。

( 2 ) 3D 柱状图

       对应的工厂方法为 createBarChart3D ,该方法的参数与平面柱状图相同。 3D 柱状图的 Plot 对象是 CategoryPlot 类型。 CategoryPlot 对象的 x 轴是 CategoryAxis3D 对象, y 轴是 NumberAxis3D 对象,绘制单元是 BarRenderer3D 对象,数据源是 CategoryDataset 对象。

       具体使用以及操作与平面柱状图雷同,不在详述。

2 饼状图
(1) 平面饼状图

生成平面饼状图:

JFreeChart chart = ChartFactory. createPieChart(String title, // 图标题 

                          PieDataset dataset,       // 数据源 

                          boolean legend,         // 是否显示图例 

                          boolean tooltips,         // 是否显示tooltip 

                          boolean urls) ;          // 是否指定url 

平面饼状图的Plot对象是PiePlot类型。PiePlot对象没有x轴对象、y轴对象、绘制单元对象,数据源是PieDataset对象。

 

获取PiePlot对象操作为:

PiePlot plot = (PiePlot) chart.getPlot();

获取数据源:

PieDataset dataset= plot .getDataset();

 

饼状图可以接受一切 PieDataset 类型的数据源,下面讲解一下常用的 PieDataset 类型 DefaultPieDataset 的使用方式

实例化:

    DefaultPieDataset dataset = new DefaultPieDataset();

增加修改操作:

    dataset. setValue(Comparable key, double value);

删除操作:

    dataset. remove(Comparable key);

查询操作:

    dataset. getKey(int item);

或者

dataset. getValue(int item);

 

(1)3D 饼状图

       对应的工厂方法为 createPieChart3D ,参数与平面饼状图相同。与平面饼状图的差别在于 Plot 对象是PiePlot3D类型 ,不再详述。

3 多重饼状图
( 1 )多重平面饼状图

生成多重平面饼状图:

   
   JFreeChart chart = ChartFactory. createMultiplePieChart 

(String title,               // 图标题 

                        CategoryDataset dataset,     // 数据源 

                        TableOrder order,       // 指定提取数据的方式(按行或者按列) 

                        boolean legend,            // 是否显示图例 

                        boolean tooltips,            // 是否显示 tooltip 

                        boolean urls)   ;            // 是否指定 url 


多重平面饼状图的 Plot 对象是 MultiplePiePlot 类型。 MultiplePiePlot 对象没有 x 轴对象、 y 轴对象、绘制单元对象,数据源是 CategoryDataset 对象。 MultiplePiePlot 对象中可以含有多个子 JFreeChart 对象,子 JFreeChart 对象是上面讲过的饼状图对象。

 

获取 MultiplePiePlot 对象操作为:

MultiplePiePlot plotMain = (MultiplePiePlot) chart.getPlot();

获取子 JFreeChart 的操作为:

       JFreeChart childChart=plotMain.getPieChart();

获取数据源:

CategoryDataset dataset= plotMain .getDataset();

( 2 )多重 3D 饼状图

       对应的工厂方法为 createMultiplePieChart3D ,该方法的参数与 多重平面饼状图 相同。 多重 3D 饼状图的 Plot 对象是 MultiplePiePlot 类型。 MultiplePiePlot 对象中可以含有多个子 JFreeChart 对象,子 JFreeChart 对象是上面讲过的 3D 饼状图对象。

4 线图
( 1 )平面线图

       生成平面线图:

   
   JFreeChart chart = ChartFactory. createLineChart(String title,  // 图标题 

                         String categoryAxisLabel,         //x 轴标题 

                         String valueAxisLabel,            //y 轴标题 

                         CategoryDataset dataset,           // 数据源 

                         PlotOrientation orientation,         // 显示方向 

                         boolean legend,                 // 是否显示图例 

                         boolean tooltips,                 // 是否显示 tooltip 

                         boolean urls);                  // 是否指定 url 

平面线图除了的 Plot 对象中绘制单元对象是 LineAndShapeRenderer 对象,其他一切组成对象与平面柱状图相同。

获取 Renderer 操作:

LineAndShapeRenderer renderer=(LineAndShapeRenderer) plot.getRenderer();

其他参考平面柱状图。

( 2 ) 3D 线图

对应工厂方法为 createLineChart3D ,参数与 createLineChart 相同。 3D 线图的组成对象除了绘制单元对象是 LineAndShapeRenderer3D 对象,其他一切组成对象与 3D 柱状图相同。

5 时序图
生成时序图:

    
  JFreeChart chart = ChartFactory.createTimeSeriesChart( 

              String title,    // 图标题 

                 String timeAxisLabel,   //x 轴标题 

                 String valueAxisLabel,  //y 轴标题 

                 XYDataset dataset,       // 数据源 

                 boolean legend,          // 是否显示图例 

                 boolean tooltips,        // 是否显示 tooltip 

                 boolean urls);           // 是否指定 url 
时序图的 Plot 对象是 XYPlot 类型。 XYPlot 对象的 x 轴是 DateAxis 对象, y 轴是 NumberAxis 对象,绘制单元是 XYLineAndShapeRenderer 对象,数据源是 XYDataset 对象。

Plot 对象的获取操作:

       XYPlot plot = (XYPlot) chart.getPlot();

X 轴对象的获取操作:

       DateAxis xAxis = (DateAxis) plot.getDomainAxis();

Y 轴对象的获取操作:

       NumberAxis yAxis =(NumberAxis) plot.getRangeAxis();

Renderer 对象的获取操作:

       XYItemRenderer renderer= plot.getRenderer();

 

时序图可以接受一切 XYDataset 类型的数据源,下面讲解一下常用的 XYDataset 类型 TimeSeriesCollection 的使用方式。

实例化:

       TimeSeriesCollection dataset=new TimeSeriesCollection();

添加数据操作:

       dataset. addSeries(TimeSeries); // 后面讲解 TimeSeries 对象

删除数据操作:

       dataset. removeSeries(int index);

查询数据操作 :

       dataset. getSeries(int series);

 

TimeSeries 对象操作

实例化:

       TimeSeries ts=TimeSeries(String name, Class timePeriodClass);

增加数据操作:

       ts. add(RegularTimePeriod period, double value); 

删除数据操作:

       ts. delete(RegularTimePeriod period);   

修改数据操作:

       ts. update(RegularTimePeriod period, Number value);

查询数据操作:

       ts. getValue(RegularTimePeriod period);

类 RegularTimePeriod 是 JFreeChart 提供的时间模板类,它有很多具体的时间类,比如: Minute 、 Second 、 Hour 、 Day…… 等,不再详述。
分享到:
评论
1 楼 zhaobin809 2008-11-25  
能不能给出那张平面柱状图的详细代码?我写完后柱子上有三维的渐变效果,就是柱子左端有一条白线。谢谢

相关推荐

    深入探究JFreeChart(图表报表实用教材)

    Plot 对象通常包含 Dataset(数据源)、DomainAxis(X轴)、RangeAxis(Y轴)和 Renderer(绘制单元)。Dataset 存储图表所需的数据,Renderer 负责将这些数据转化为可视化的元素。 Renderer 对象是图形绘制的核心...

    深入探究JFreeChart

    深入探究JFreeChart,详细介绍了JFreeChart中各类的使用方法以及需要注意的地方,初学起来很轻松

    jfreechart 源代码

    《深入解析JFreeChart源代码及其应用场景》 JFreeChart是一款功能强大的开源Java图表库,它为Java开发者提供了丰富的图表类型,包括折线图、柱状图、饼图、散点图、甘特图等,使得在Java应用程序中创建高质量的图形...

    JFreeChart Demo源代码

    通过深入研究"JFreeChart Demo源代码",你可以掌握创建复杂、美观图表的技巧,从而在Java应用程序中实现强大的数据可视化。同时,这些示例也可以作为模板,帮助你快速构建自己的图表组件。对于Java开发人员尤其是...

    JFreeChart 深入探究 实用文档

    通过这份“JFreeChart深入探究实用文档”,你可以系统地学习和掌握JFreeChart的各种特性和用法,从而在实际项目中灵活运用,提升应用程序的数据可视化能力。同时,不断实践和探索,将使你更加精通这个强大的图表库。

    jfreechart demo 1.0.8 源代码

    10. **性能优化**:对于大数据量的图表,源代码中可能包含了一些优化策略,如延迟加载、数据分块等,这对于处理大量数据的图表渲染至关重要。 通过对JFreeChart 1.0.8 Demo源代码的深入研究,开发者不仅可以掌握...

    jfreechartDEMO(官网demo与源代码)

    本文将通过分析"jfreechart demo 源代码",深入理解JFreeChart的使用方法和内部实现,帮助开发者更好地利用这个工具进行数据可视化。 1. **JFreeChart简介** JFreeChart是开源的Java库,用于生成高质量的2D图表。...

    jfreechart数据下探的小例子

    数据下探(Data Drilling)是数据分析中的一个重要概念,它允许用户深入研究数据以获取更详细的信息。在 JFreeChart 中,数据下探通常是指点击图表上的某个元素(如柱子或点)时,触发进一步的数据查询或展示与该...

    JFreeChart 1.0.14 例子所有源代码

    **JFreeChart 1.0.14 示例代码详解** JFreeChart 是一个流行的 Java 图形库,用于创建高...通过深入研究这些源代码,开发者可以灵活运用 JFreeChart 创建出具有专业外观和丰富功能的图表,提升应用程序的用户体验。

    jfreechart源代码在swt和jsp页面

    在这个场景中,我们将深入探讨如何在 SWT(Standard Widget Toolkit)和 JSP(JavaServer Pages)环境中使用 JFreeChart 的源代码来生成这些图表。 首先,让我们了解 JFreeChart 的核心功能。JFreeChart 提供了多种...

    jfreechart处理javaweb开发系统动态监控实例

    JFreeChart提供了丰富的API,允许开发者自定义图表的颜色、样式、数据源等,使其能够适应不同的需求。在本实例中,我们可以使用JFreeChart来创建动态更新的网络流量图,实时反映系统的网络活动情况。 其次,Jpcap是...

    jfreechart demo

    这篇内容将深入探讨 JFreeChart 的基本使用方法和在 `jfreechart demo` 中的示例程序。 首先,让我们了解 JFreeChart 的核心概念。JFreeChart 提供了 ChartFactory 类,用于创建不同类型的图表。例如,你可以通过 `...

    jfreechart 1.0.10 demo 源代码

    5. **数据绑定**:将数据结构(如CategoryDataset或PieDataset)与图表关联,JFreeChart会自动处理数据的渲染。 五、实战应用 JFreeChart在各种实际应用场景中表现出色,如: 1. **数据分析报告**:在报表系统中,...

    struts+jfreechart例子源代码

    通过这个示例,开发者可以学习如何在Java Web应用中集成数据可视化功能,理解如何在Struts1框架下处理动态图表的生成和展示,这对于构建交互式数据报告或监控系统非常有用。同时,它也提醒我们,尽管Struts1已经比较...

    jfreechart,jfreechart-1.0.13,jfreechart-1.0.13,jfreechart

    《JFreeChart:Java 图形绘制的利器》 在Java编程世界中,高效且美观的图形展示是数据可视化的重要组成部分...通过深入学习和实践,开发者可以利用JFreeChart轻松实现数据的可视化,提升应用程序的专业性和用户体验。

    JfreeChart 1.0.10 demo 源代码

    9. **学习资源**:源代码作为学习材料,可以帮助开发者深入理解JFreeChart的内部工作原理,如何创建和定制图表,并解决实际项目中的问题。 10. **示例代码的重要性**:源代码中的示例涵盖了各种图表类型和功能,...

    JFreeChart developer guide 配套的源代码

    这份"JFreeChart developer guide 配套的源代码"是学习和理解 JFreeChart 库的宝贵资源,可以帮助开发者深入探索其实现原理,以及如何在自己的项目中有效利用它。 1. **JFreeChart 架构** JFreeChart 的核心架构...

    JFreeChart 官方例子 JFReeChart Dome

    通过深入研究JFreeChart的官方示例,开发者能够熟练掌握如何创建、配置和控制各种图表,从而提升项目中的数据可视化能力。无论是为了教学、分析还是展示,JFreeChart都是Java环境中一个非常有价值的工具。

    jfreechart

    标签 "源码" 暗示 JFreeChart 是一个可以查看和修改源代码的项目,这对于开发者来说是一个重要的特性,因为它允许他们深入理解其内部工作原理,根据需求进行定制,或者修复可能存在的问题。"工具" 标签则表明 ...

    jfreechart-1.0.19-Demo-Source 源代码

    通过深入研究 `jfreechart-1.0.19-Demo-Source` 的源代码,开发者不仅可以了解 JFreeChart 的基本用法,还能掌握如何扩展和优化图表功能,以满足复杂的数据可视化需求。在实际项目中,结合这个源码,我们可以更好地...

Global site tag (gtag.js) - Google Analytics