利用JFreeChart生成多轴图表(7) (转自 JSP开发技术大全)

14.7 利用JFreeChart生成多轴图表

通过JFreeChart插件还可以生成拥有多个坐标轴的图表,简称多轴图表。在生成多轴图表时,必须通过绘图区对象,因为在JFreeChart中各种风格的统计图均是绘制在绘图区对象上的,一个绘图区对象可以接收多个坐标轴对象、数据集对象和绘图风格对象,向单轴图表中添加附加轴的基本步骤如下。

(1)创建一个坐标轴对象并添加到绘图区对象当中。

(2)将相应的绘图数据集对象添加到绘图区对象当中。

(3)通过绘图区对象将相应的绘图数据集对象和对应的坐标轴对象建立映射关系。

(4)创建一个用来描述绘图数据的图形对象,并添加到绘图区对象当中。

下面是一个多轴图表之双轴图表的典型应用,下面将以此讲解多轴图表的具体生成方法。

 实例位置:光盘\mingrisoft\14\dxyy\01

该典型应用生成的多轴图表的效果如图14.10所示。

图14.10 利用JFreeChart生成多轴图表

因为在绘制多轴图表时,需要用到绘图区对象,所以在这里首先获得绘图区对象,代码如下:

CategoryPlot plot = chart.getCategoryPlot();

下面创建一个坐标轴对象,并添加到绘图区对象当中,代码如下:

ValueAxis axis1 = new NumberAxis("季度销售汇总    单位:万册");

plot.setRangeAxis(1, axis1);

在创建坐标轴对象时,入口参数为坐标轴的名称。在通过绘图区对象的setRangeAxis()方法将坐标轴对象添加到绘图区时,需要提供两个入口参数,第一个为坐标轴的索引位置,要求为正整数,绘图区默认的坐标轴索引为“0”,所以这里将其设为“1”;第二个为坐标轴对象。

下面的代码负责封装绘图数据集,并将其添加到绘图区对象当中,代码如下:

DefaultCategoryDataset dataset1 = new DefaultCategoryDataset();

// 封装绘图数据集的具体代码略

plot.setDataset(1, dataset1);

在通过绘图区对象的setDataset()方法将绘图数据集对象添加到绘图区时,同样需要提供两个入口参数,第一个为数据集的索引位置,要求为正整数,绘图区默认的绘图数据集索引为“0”,所以这里将其设为“1”;第二个为绘图数据集对象。

下面需要将绘图数据集对象和欲采用的坐标轴对象建立映射关系,方法如下:

plot.mapDatasetToRangeAxis(1, 1);

在通过绘图区对象的mapDatasetToRangeAxis()方法将绘图数据集对象和坐标轴对象建立映射关系时,同样需要提供两个入口参数,第一个为数据集的索引位置;第二个为坐标轴的索引位置。

   注意:并不是索引位置相同的绘图数据集和坐标轴是一一对应的,如果不为索引位置为非0的绘图数据集映射对应的坐标轴,JFreeChart默认采用索引位置为0的坐标轴,所以,也可以利用一个坐标轴来描述图形对象的数据信息。

最后,创建一个用来描述绘图数据的图形对象,并添加到绘图区对象当中,代码如下:

CategoryItemRenderer renderer1 = new LineAndShapeRenderer();

renderer1.setSeriesPaint(0, Color.BLACK);

plot.setRenderer(1, renderer1);

   注意:用来描述绘图数据的图形对象和绘图数据集的索引是一一对应的。

利用JFreeChart生成多轴图表(7) (转自 JSP开发技术大全)的更多相关文章

  1. 利用JFreeChart生成组合图表 (8) (转自 JSP开发技术大全)

    利用JFreeChart生成组合图表 (8) (转自 JSP开发技术大全) 14.8 利用JFreeChart生成组合图表  实例位置:光盘\mingrisoft\14\dxyy\02 通过JFree ...

  2. 利用JFreeChart生成区域图 (5) (转自 JSP开发技术大全)

    利用JFreeChart生成区域图 (5) (转自 JSP开发技术大全) 14.5 利用JFreeChart生成区域图 通过JFreeChart插件只能生成普通效果的区域图,利用工厂类ChartFac ...

  3. 利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全)

    利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全) 14.4 利用JFreeChart生成折线图 通过JFreeChart插件,既可以生成普通效果的折线图,也可以生成3D效果的折 ...

  4. 利用JFreeChart生成时序图(6) (转自 JSP开发技术大全)

    利用JFreeChart生成时序图(6) (转自 JSP开发技术大全) 14.6 利用JFreeChart生成时序图 通过JFreeChart插件只能生成普通效果的时序图,利用工厂类ChartFact ...

  5. JFreeChart生成柱形图(2) (转自 JSP开发技术大全)

    JFreeChart生成柱形图(2) (转自 JSP开发技术大全) 14.2 利用JFreeChart生成柱形图14.2.1 利用DefaultCategoryDataset数据集绘制柱形图 通过JF ...

  6. JFreeChart生成饼形图(3) (转自 JSP开发技术大全)

    JFreeChart生成饼形图(3) (转自 JSP开发技术大全) 14.3 利用JFreeChart生成饼形图 通过JFreeChart插件,即可以生成普通效果的饼形图,也可以生成3D效果的饼形图: ...

  7. JFreeChart生成饼形图(3)11 (转自 JSP开发技术大全)

    FreeChart生成饼形图(3) (转自 JSP开发技术大全) 14.3 利用JFreeChart生成饼形图 通过JFreeChart插件,即可以生成普通效果的饼形图,也可以生成3D效果的饼形图:如 ...

  8. JFreeChart基础(1) (转自 JSP开发技术大全)

    JFreeChart基础(1) (转自 JSP开发技术大全) JFreeChart是一个Java开源项目,是一款优秀的Java图表生成插件,它提供了在Java Application.Servlet和 ...

  9. 利用JFreeChart生成简单柱状图(Java)

    package barchartdemo1; import <a href="http://lib.csdn.net/base/javaee" class='replace_ ...

随机推荐

  1. 笔试算法题(24):找出出现次数超过一半的元素 & 二叉树最近公共父节点

    出题:数组中有一个数字出现的次数超过了数组长度的一半,请找出这个数字: 分析: 解法1:首先对数组进行排序,时间复杂度为O(NlogN),由于有一个数字出现次数超过了数组的一半,所以如果二分数组的话, ...

  2. List<> 集合 删除指定行

    不多说,直接上代码 public class Name { public string NameInfo { get; set; } } 删除值为Name2的行 static void Main(st ...

  3. 谷歌浏览器添加Bing搜索引擎:

    谷歌浏览器添加Bing搜索引擎:   https://www.bing.com/search?q=%s&pc=MOZI&form=MOZLBR  

  4. MySQL MGR源码分析2 - 从start group_replication看MGR代码框架

    此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 上一篇我们从方案层面讲解了MGR的成员管理和故障恢复.本篇从源码层面捋一捋,通过本篇介绍,除了能够了解如何将 ...

  5. 将cocos2dx 2.x.x从eclipse转移到Android Studio遇到的问题

    cocos2dx 2.x.x从eclipse转移到Android Studio遇到的问题 可能我用不太习惯Android Studio才会遇到这么多问题,让老手们见笑了. cocos2dx的最新版本, ...

  6. BNUOJ 26223 CosmoCraft

    CosmoCraft Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ID: ...

  7. hihoCoder#1119 小Hi小Ho的惊天大作战:扫雷·二

    原题地址 没有复杂算法,就是麻烦,写起来细节比较多,比较考验细心,一次AC好开心. 代码: #include <iostream> #include <vector> #inc ...

  8. [luoguP2401] 不等数列

    传送门 f[i][j]表示前i个数有j个<的方案数 #include <cstdio> #define N 1001 #define p 2015 int n, k; int f[N ...

  9. [luoguP1136] 迎接仪式(DP)

    传送门 每个字母只有两种选择,变成另一个或者不变. 所以f[i][j][k]表示前i个字母有j个j变成z,有k个z变成j 只需要比较j==k时的答案就行 #include <cstdio> ...

  10. Windows 10+Ubuntu 16.04在MBR分区上安装双系统之后没有Windows 10的启动菜单解决方法

    背景: 硬盘分区方式:MBR 硬盘容量256,Windows 100,Ubuntu 156,其中主分区安装的是Windows,Ubuntu安装在逻辑分区上,文件系统为Ext4,整个Ubuntu就挂载在 ...