`
pfwang
  • 浏览: 106011 次
社区版块
存档分类
最新评论

深入探究JFreeChart(2)

阅读更多

3  数据源处理

JFreeChart 中的数据源是DataSet接口类型。该接口有三个主要的子类接口:CategoryDataset、PieDataset、SeriesDataset

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

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

SeriesDataset 接口的实现类基本上都维护了一种特定数据结构的列表。以TimeSeriesCollection为例。它维护一个TimeSeries对象列表,提供对该列表的增删查操作。每个TimeSeries对象维护一个列表,提供对该列表的增删改查操作。
三 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 楼 fool2011 2012-09-11  
很基础,很强大

相关推荐

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

    JFreeChart 是一个强大的 Java 图形库,专用于创建各种商业图表,如饼图、柱状图、线图、甘特图、股票图等。它是一个开源项目,可以在 SourceForge.net 上获取其源码和 API。JFreeChart 提供了丰富的功能,包括支持...

    深入探究JFreeChart

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

    JFreeChart 深入探究 实用文档

    这份“JFreeChart深入探究实用文档”是学习和掌握JFreeChart的宝贵资源,下面我们将详细探讨其主要知识点。 1. **JFreeChart基础** - **安装与引入**:首先,了解如何将JFreeChart库添加到项目中,无论是通过Maven...

    JFreeChart相关资料

    接着,"【原创】深入探究JFreeChart(1).mht"和"【原创】深入探究JFreeChart(2).mht"是一篇关于JFreeChart的深度教程。MHT是单一文件网页,这种格式将HTML、图像和其他资源打包在一个文件中,方便阅读和分享。这...

    jfreechart-1.0.8-demo.jnlp

    在深入研究JFreeChart时,有几个关键知识点值得关注: 1. **图表类型**:了解JFreeChart支持的各类图表,如折线图、柱状图、饼图、散点图、甘特图等,以及它们各自的用途。 2. **数据模型**:理解如何将数据映射到...

    jfreechart-1.0.14 库文件,源代码(src)及javadoc文件

    通过查看源代码,开发者可以深入探究内部实现细节,理解数据如何被处理,以及各种图表组件是如何构建的。这对于定制图表功能或优化性能的开发者来说尤其有用。如果你遇到了特定问题,查阅源代码可能帮助你找到解决...

    《精通Java Web动态图表编程》

    《精通Java Web动态图表编程》这本书是专门为...总的来说,《精通Java Web动态图表编程》这本书将引导你深入探究Java Web开发中的动态图表制作,让你能够创建出美观、交互性强的可视化应用,提高业务分析和决策的效率。

    JSP科研处管理信息系统(源代码+论文).zip

    【JSP科研处管理信息系统】是一个基于Java Server...通过对这些知识点的理解,可以深入探究【JSP科研处管理信息系统】的设计思路和实现方式,无论是对于学习JSP技术,还是提升科研管理信息化水平,都有很高的参考价值。

    2020年B题 股指与国家经济.zip

    3. **数据关系分析**:股票指数与国家经济的关系可以通过收集历史数据进行统计分析,例如使用相关性分析、回归分析等方法,探究二者之间是否存在显著的正相关或负相关关系。 4. **Java编程**:在处理这类问题时,...

    ShotCaller:预测霍普金森分裂压力棒上的下一个镜头

    在深入探究ShotCaller项目时,开发者和研究人员可以学习到如何将Java应用于数据科学项目,以及如何解决实际工程问题。这个项目不仅展示了Java在数据分析领域的应用,也反映了机器学习在科学研究中的重要作用。通过...

    test4u:在线考试门户

    "Test4U: 在线考试门户"是一款基于Java技术构建的平台,专为教育和培训领域...对于学习和理解Java Web开发,这个项目提供了丰富的实践素材,可以深入探究MVC架构、数据库设计、安全策略以及测试方法等多个关键知识点。

    HBase性能深度分析

    本文将深入探讨HBase的性能测试细节,重点剖析数据插入性能,并通过实证分析揭示其背后的机制与优化策略。 #### 数据插入性能测试设计 在评估HBase的实时数据插入性能时,测试场景设计至关重要。以随机值的Rowkey...

    hw2_chicago_data_challenge:开源计算家庭作业2

    在这个名为"hw2_chicago_data_challenge"的开源计算家庭作业中,主要目标是探究两个关键问题:一是分析芝加哥各街区的犯罪率与平均收入之间的关联性;二是考察犯罪率与当地警察局数量的关系。这个任务涉及到的数据...

    MyTeaProject

    《MyTeaProject:探索Java技术的茶文化实践》 ...通过深入探究这个项目,我们可以了解到如何利用Java技术来创新,将传统的茶文化以现代化的方式呈现,同时也能提升自己的编程技能和项目管理能力。

    Check-Wikipedia-Backlinks-

    《探究Java技术在Wikipedia反向链接分析中的应用》 在信息技术领域,数据挖掘与分析是一项重要的工作,尤其是在网络环境中,海量的数据蕴含着无尽的信息价值。Wikipedia,作为全球最大的在线百科全书,其丰富的链接...

    Gnome-framework:MSR2009中用于分析Gnome数据集的框架

    5. **数据分析与可视化**:框架可能包含各种统计分析和可视化工具,用于探究版本控制、bug报告和邮件列表之间的关系,例如,哪些bug最常被提及,哪些开发者在邮件列表中最活跃,重构活动与bug修复之间的时间间隔等。...

Global site tag (gtag.js) - Google Analytics