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

14.3 利用JFreeChart生成饼形图

通过JFreeChart插件,即可以生成普通效果的饼形图,也可以生成3D效果的饼形图;如果想生成普通效果的饼形图,需要通过工厂类ChartFactory的createPieChart()方法获得JFreeChart类的实例,如果想生成3D效果的饼形图,需要通过工厂类ChartFactory的createPieChart3D()方法获得JFreeChart类的实例,这两个方法的入口参数是完全相同的,各个入口参数的类型及功能如表14.3所示。

表14.3                                      绘制饼形图方法的入口参数类型及功能

参 数 序 号

入 口 参 数

参 数 功 能

1

String title

图表标题

2

PieDataset dataset

绘图数据集

3

boolean legend

用于设定是否显示图例

4

boolean tooltips

用于设定是否采用标准生成器

5

boolean urls

用于设定是否包生成链接

绘制饼形图时,需要通过DefaultPieDataset数据集封装数据,该数据集中的每一个元素是由一组键值对组成的,这与Map集合有些类似,DefaultPieDataset数据集通过setValue()方法添加数据,setValue()方法有两个重载方法,均有两个入口参数,并且每个参数的含义是相同的,第一个入口参数为图例名称,第二个入口参数统计数据,它们的具体定义如下:

public void setValue(Comparable key, Number value) {

this.data.setValue(key, value);

fireDatasetChanged();

}

public void setValue(Comparable key, double value) {

setValue(key, new Double(value));

}

可以通过绘图区对象PiePlot的setForegroundAlpha(float alpha)方法,实现饼图的透明效果,入口参数alpha的取值范围在0.0和1.0之间,当为0.0时,将不显示饼图,当为1.0时,则不存在透明效果,当超出该范围时,将抛出如下异常:

java.lang.IllegalArgumentException: alpha value out of range

 示例14-03 编程类图书年销售额百分比饼形图分析

下面来看一个绘制饼形图的例子,该例绘制的饼形图效果如图14.4和图14.5所示。

            

图14.4 普通效果的饼形图                              图14.5 3D效果的饼形图

代码14-03 光盘位置:光盘\mingrisoft\14\sl\03

本示例使用的模拟绘图数据如下:

String[] cutline;     // 图例

Double[] data;     // 绘图数据

this.cutline = new String[] { "ASP", "JSP", "PHP", "Hibernate", "Spring", "数据库" };

this.data = new Double[cutline.length];

for (int i = 0; i < data.length; i++) {

data[i] = 1 + Math.random() * 100;

}

创建DefaultPieDataset数据集的代码如下:

DefaultPieDataset dataset = new DefaultPieDataset();

for (int i = 0; i < cutline.length; i++) {

dataset.setValue(cutline[i], data[i]);

}

创建绘制3D效果饼形图的JFreeChart实例,代码如下:

JFreeChart chart = ChartFactory.createPieChart3D(chartTitle,      // 图表标题

dataset,      // 绘图数据集

False,      // 设定是否显示图例

False,     // 设定是否显示图例名称

False);     // 设定是否生成链接

    说明:这里绘制的是图14.5所示的3D效果图,如果想绘制图14.4所示的普通效果图,只需将createPieChart3D()方法改为createPieChart()方法。

当需要在图片上显示中文时,建议不要使用反锯齿功能,这样能够保证汉字的清晰度,代码如下:

chart.setAntiAlias(False);

可以自行定义图表标题的字体、样式、大小和颜色等,代码如下:

TextTitle title = chart.getTitle();

title.setFont(new Font("汉真广标", Font.BOLD, 21));

title.setPaint(Color.RED);

下面通过绘图区对象设置饼状图的绘制方向,可以按顺时针方向绘制,也可以按逆时针方向绘制,以及开始绘制第一段圆弧的角度,关键代码如下:

plot.setDirection(Rotation.ANTICLOCKWISE);

plot.setStartAngle(90);

可以设置饼形图的外观效果,例如圆形(True)或椭圆形(False),默认为圆形,建议在绘制3D效果图时将其设为False,关键代码如下;

plot.setCircular(False);

下面让饼形图实现透明效果,代码如下:

plot.setForegroundAlpha(0.8f);

JFreeChart生成饼形图(3) (转自 JSP开发技术大全)的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

    利用JFreeChart生成多轴图表(7) (转自 JSP开发技术大全) 14.7 利用JFreeChart生成多轴图表 通过JFreeChart插件还可以生成拥有多个坐标轴的图表,简称多轴图表.在生 ...

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

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

  9. Java Web开发技术教程入门-初识动态网页

    这段时间学校搞了一个"阅战阅勇"的阅读活动,奖品还是挺丰富的~于是,奔着这些奖品,我去图书馆借了这本<Java Web开发技术教程>.一是为了那些丰富的奖品,二是为了回 ...

随机推荐

  1. hexo干货系列:(一)hexo+gitHub搭建个人独立博客

    前言 一直想要一个自己的独立博客,但是觉得申请域名+服务器的太麻烦了就一直没有实现.偶然机会发现Hexo这个优秀的静态博客框架,再搭配现在流行的gitHub,简直是完美写博客的黄金搭档(免费+方便). ...

  2. bzoj 1251序列终结者 splay 区间翻转,最值,区间更新

    序列终结者 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 4594  Solved: 1939[Submit][Status][Discuss] De ...

  3. 【设计模式】GOF设计模式趣解(23种设计模式)

    创建型模式                   1.FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说 ...

  4. 【BZOJ2733】永无乡(线段树,启发式合并)

    题意:支持合并,求块内K小数 对于 100%的数据 n≤100000,m≤n,q≤300000 思路:对于每一个块建立一棵动态开点的线段树,暴力(启发式?)合并后二分下就行了 merge用函数的方式写 ...

  5. HDU 6441 费马大定理+勾股数

    #include <bits/stdc++.h> #define pb push_back #define mp make_pair #define fi first #define se ...

  6. BZOJ——4195: [Noi2015]程序自动分析

    http://www.lydsy.com/JudgeOnline/problem.php?id=4195 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: ...

  7. 包装类Float中为什么有两个常量来表示最小值

    1)问:包装类Float中为什么有两个常量来表示最小值:MIN_VALUE和MIN_NORMAL ① MIN_VALUE:最小正非零值常量,是非规格化浮点数所能表示的最小值.值为 3.4E-45 的常 ...

  8. 标准格式包含: 私有属性 无参构造 有参构造 setter 和getter 需求中的方法 需求一: 员工类Employee 属性:姓名name,工号id,工资salary 行为:显示所有成员信息的方法show() 需求二: 动物类Animal 属性:姓名name,年龄age 行为:吃饭

      // 员工类 public class Employee { private String name; private int id; private double salary; public ...

  9. Java实验--继承与多态

    ---恢复内容开始--- 题目如下: [实验任务一]:面积计算(设计型). 1. 实验要求: 实验报告中要求包括程序设计思想.程序流程图.源代码.运行结果截图.编译错误分析等内容. 2.实验内容: ( ...

  10. IOS开发 Block的学习

    苹果公司正在大力推广Block块语法的使用,据说Block会迟早取代一般协议代理的使用. Block最大的作用是函数回调,简化代码. 在ios中,将blocks当成对象来处理,它封装了一段代码,这段代 ...