JFreeChart生成饼形图(3) (转自 JSP开发技术大全)
JFreeChart生成饼形图(3) (转自 JSP开发技术大全)
通过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开发技术大全)的更多相关文章
- JFreeChart生成柱形图(2) (转自 JSP开发技术大全)
JFreeChart生成柱形图(2) (转自 JSP开发技术大全) 14.2 利用JFreeChart生成柱形图14.2.1 利用DefaultCategoryDataset数据集绘制柱形图 通过JF ...
- JFreeChart生成饼形图(3)11 (转自 JSP开发技术大全)
FreeChart生成饼形图(3) (转自 JSP开发技术大全) 14.3 利用JFreeChart生成饼形图 通过JFreeChart插件,即可以生成普通效果的饼形图,也可以生成3D效果的饼形图:如 ...
- 利用JFreeChart生成时序图(6) (转自 JSP开发技术大全)
利用JFreeChart生成时序图(6) (转自 JSP开发技术大全) 14.6 利用JFreeChart生成时序图 通过JFreeChart插件只能生成普通效果的时序图,利用工厂类ChartFact ...
- 利用JFreeChart生成区域图 (5) (转自 JSP开发技术大全)
利用JFreeChart生成区域图 (5) (转自 JSP开发技术大全) 14.5 利用JFreeChart生成区域图 通过JFreeChart插件只能生成普通效果的区域图,利用工厂类ChartFac ...
- 利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全)
利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全) 14.4 利用JFreeChart生成折线图 通过JFreeChart插件,既可以生成普通效果的折线图,也可以生成3D效果的折 ...
- 利用JFreeChart生成组合图表 (8) (转自 JSP开发技术大全)
利用JFreeChart生成组合图表 (8) (转自 JSP开发技术大全) 14.8 利用JFreeChart生成组合图表 实例位置:光盘\mingrisoft\14\dxyy\02 通过JFree ...
- 利用JFreeChart生成多轴图表(7) (转自 JSP开发技术大全)
利用JFreeChart生成多轴图表(7) (转自 JSP开发技术大全) 14.7 利用JFreeChart生成多轴图表 通过JFreeChart插件还可以生成拥有多个坐标轴的图表,简称多轴图表.在生 ...
- JFreeChart基础(1) (转自 JSP开发技术大全)
JFreeChart基础(1) (转自 JSP开发技术大全) JFreeChart是一个Java开源项目,是一款优秀的Java图表生成插件,它提供了在Java Application.Servlet和 ...
- Java Web开发技术教程入门-初识动态网页
这段时间学校搞了一个"阅战阅勇"的阅读活动,奖品还是挺丰富的~于是,奔着这些奖品,我去图书馆借了这本<Java Web开发技术教程>.一是为了那些丰富的奖品,二是为了回 ...
随机推荐
- hexo干货系列:(一)hexo+gitHub搭建个人独立博客
前言 一直想要一个自己的独立博客,但是觉得申请域名+服务器的太麻烦了就一直没有实现.偶然机会发现Hexo这个优秀的静态博客框架,再搭配现在流行的gitHub,简直是完美写博客的黄金搭档(免费+方便). ...
- bzoj 1251序列终结者 splay 区间翻转,最值,区间更新
序列终结者 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 4594 Solved: 1939[Submit][Status][Discuss] De ...
- 【设计模式】GOF设计模式趣解(23种设计模式)
创建型模式 1.FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说 ...
- 【BZOJ2733】永无乡(线段树,启发式合并)
题意:支持合并,求块内K小数 对于 100%的数据 n≤100000,m≤n,q≤300000 思路:对于每一个块建立一棵动态开点的线段树,暴力(启发式?)合并后二分下就行了 merge用函数的方式写 ...
- HDU 6441 费马大定理+勾股数
#include <bits/stdc++.h> #define pb push_back #define mp make_pair #define fi first #define se ...
- BZOJ——4195: [Noi2015]程序自动分析
http://www.lydsy.com/JudgeOnline/problem.php?id=4195 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: ...
- 包装类Float中为什么有两个常量来表示最小值
1)问:包装类Float中为什么有两个常量来表示最小值:MIN_VALUE和MIN_NORMAL ① MIN_VALUE:最小正非零值常量,是非规格化浮点数所能表示的最小值.值为 3.4E-45 的常 ...
- 标准格式包含: 私有属性 无参构造 有参构造 setter 和getter 需求中的方法 需求一: 员工类Employee 属性:姓名name,工号id,工资salary 行为:显示所有成员信息的方法show() 需求二: 动物类Animal 属性:姓名name,年龄age 行为:吃饭
// 员工类 public class Employee { private String name; private int id; private double salary; public ...
- Java实验--继承与多态
---恢复内容开始--- 题目如下: [实验任务一]:面积计算(设计型). 1. 实验要求: 实验报告中要求包括程序设计思想.程序流程图.源代码.运行结果截图.编译错误分析等内容. 2.实验内容: ( ...
- IOS开发 Block的学习
苹果公司正在大力推广Block块语法的使用,据说Block会迟早取代一般协议代理的使用. Block最大的作用是函数回调,简化代码. 在ios中,将blocks当成对象来处理,它封装了一段代码,这段代 ...