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

JFreeChart 中的数据源

    博客分类:
  • J2EE
阅读更多

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…… 等,不再详述。

分享到:
评论

相关推荐

    jfreechart demo 1.0.8 源代码

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

    jfreechart中文学习文档

    组合图表将不同的图表类型结合在一起,而叠加图表则在同一坐标系中绘制多个数据系列。JFreeChart 支持这两种图表类型。 **2.14 未来发展方向** JFreeChart 团队将继续开发新的图表类型,并增强现有图表的功能,以...

    JfreeChart中文教程+中文API

    2. **Dataset接口**:表示图表的数据源,包含CategoryDataset、ValueDataset、XYDataset等子接口,用于存储和管理不同类型的图表数据。 3. **Plot类**:负责绘制图表的主要部分,包含坐标轴、数据系列等信息。不同...

    JFreeChart API 中文文档

    - **数据支持**:JFreeChart 可以接受各种数据源,如数组、列表、数据库查询结果等,方便地与Java应用中的数据结构集成。 - **交互性**:支持鼠标点击、拖动等交互操作,如选择区域、显示提示信息等。 - **多平台...

    jfreechart 1.0.10 demo 源代码

    4. **数据源支持**:JFreeChart可以接收多种数据源,如数组、集合、数据库结果集等,方便数据集成。 5. **多平台兼容**:由于是Java编写,JFreeChart可以在任何Java运行环境中运行,无需考虑操作系统差异。 三、...

    JFreeChart Demo源代码

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

    jfreechart 源代码

    甚至可以通过`Dataset`接口替换数据源,实现动态数据更新。这些在`ChartCustomization`类中都有详细的实现。 在实际应用中,`Demo`项目是学习JFreeChart的重要参考。这个项目包含了各种类型的图表示例,如`...

    jfreechart_数据报表

    接着,需要提供数据源,通常是一个`CategoryDataset`或`PieDataset`对象,它们包含了图表中的数据。最后,通过`ChartFrame`类可以将生成的图表显示在GUI应用程序中。 对于初学者,Jfreechart_数据报表的压缩包可能...

    JfreeChart 1.0.10 demo 源代码

    在标题和描述中提到的"JfreeChart 1.0.10 demo 源代码"是一份包含了示例和测试代码的资源,对于学习和理解如何使用JFreeChart库来构建图表非常有帮助。 1. **JFreeChart基本结构**:JFreeChart的核心组件包括`...

    jfreechart中文文档和jar包

    JasperReport是一个开源的报表工具,它能够设计和生成复杂的报表,支持多种数据源,如数据库、CSV文件、XML数据等。JasperReport可以与JFreeChart结合使用,通过JFreeChart生成的图表增强报表的可视化效果。报表设计...

    JFreeChart中文开发指南

    它包含了图表的标题、图例和数据源。 3. **Dataset**: 数据集是图表数据的容器,可以是CategoryDataset(分类数据集)或TimeSeriesCollection(时间序列集合)等,根据图表类型选择合适的数据集。 4. **Renderer**...

    JFreeChart 1.0.14 例子所有源代码

    4. **数据源与序列化** - **数据模型(Data Models)**:支持各种数据结构,如数组、列表和表格,以及CSV、XML等数据格式的导入导出。 - **序列化(Serialization)**:能够将图表对象序列化为文件,便于保存和...

    jfreechart-1.0.13中文乱码,数值显示等问题

    2. 对数据源进行编码转换:确保你的数据源(如CSV或数据库)正确编码为UTF-8,避免在读取时产生乱码。 3. 在生成图表的文本元素时,使用对应的编码设置,如: ```java TextAttribute.FONT, new Font("SimSun", Font....

    jfreechartDEMO(官网demo与源代码)

    DEMO展示了如何创建各种类型的图表,以及如何自定义图表的样式、颜色、数据源等。通过运行DEMO并查看源代码,我们可以快速掌握JFreeChart的基本用法。 3. **源代码解析** "jfreechart demo 源代码"包含了大量的...

    jfreechart 中文指导

    在实际应用中,JFreeChart可以用于数据报告、监控系统、数据分析等多种场合。例如,你可以使用它来创建一个饼图展示公司的销售分布,或者用折线图追踪一段时间内的股票价格变化。通过组合不同的图表类型和自定义选项...

    Jfreechart各种图的源代码

    JFreeChart是一款强大的Java图表库,它为...通过研究这个压缩包中的源代码,开发者不仅可以了解如何使用JFreeChart,还能学习到数据可视化的基本原则和技巧,这对于提升应用的用户体验和数据分析能力具有重要的价值。

    jfreechart数据下探的小例子

    4. **多维数据支持**:如果数据源包含多个维度,可以考虑实现多维度的数据下探。 5. **性能优化**:对于大数据量的图表,优化渲染和事件处理性能,确保流畅的用户体验。 这个简单的 JFreeChart 数据下探示例为...

    如何在eclipse中配置JFreeChart

    JFreeChart是一款功能强大的Java图表库,它能够生成多种图表,如柱状图、折线图、饼图、时间序列图等,常用于Java...通过以上步骤,我们可以在Eclipse中配置JFreeChart,从而在Java应用中方便地生成和使用图表数据。

    jfreechart中文帮助文档和教程

    创建JFreeChart对象需要指定图表类型、数据源以及可选的配置参数。例如,创建一个简单的柱状图,需要以下步骤: 1. 创建一个`CategoryDataset`,存储数据。 2. 使用`ChartFactory`创建柱状图,传入`CategoryDataset...

    java中关于JFreeChart实现实时曲线图

    2. **构建数据集(Dataset)**:将多个`TimeSeries`实例组合成一个`TimeSeriesCollection`对象,作为图表的数据源。 3. **生成图表(Chart)**:通过`ChartFactory`类的静态方法创建图表,这里使用的是时间序列图...

Global site tag (gtag.js) - Google Analytics