jfreechart生成Multiple Pie Chart
来源:互联网 发布:qq群淘宝客优惠劵软件 编辑:程序博客网 时间:2024/04/30 05:01
作为java web报表开发中的一把利器,如今网上jfreechart的文章有很多,但是没有介绍如何生成Multiple Pie Chart这种类型的饼图。我来填补这个空白把 ^ ^
源程序是基于Servlet / JSP的,jfreechart的版本是0.9.21。下面是需要说明的几点:
1、工厂类的createMultiplePieChart方法中的第二个参数类型为CategoryDataset。 由于这是个接口,我们在构建数据集时用实现此接口的DefaultCategoryDataset就可以了。注意不要用PieDataset来创建数据 集。
2、createMultiplePieChart方法中的第三个参数类型为org.jfree.util.TableOrder,取值TableOrder.BY_ROW和TableOrder.BY_COLUMN。具体作用大家试一下就明白了。
3、 如果要自定义饼图中的各个属性,在获取plot对象时要注意类型为MultiplePiePlot。先用getPieChart获取一个 JFreeChart对象,之后就可以用getPlot方法获取PiePlot类型。之后就可以用各种setter方法自定义设置了,由于数据集是 category,所以setter方法的范围是all or none。
4、最新版本中(1.0.3)设置标签格式的setLabelGenerator方法的参数由StandardPieItemLabelGenerator变为PieSectionLabelGenerator。只是名字变了。
<%@ page language="java" contentType="image/png;charset=GB2312"
import="java.text.*"
import="org.jfree.chart.*"
import="org.jfree.chart.servlet.*"
import="org.jfree.chart.plot.*"
import="org.jfree.chart.labels.StandardPieItemLabelGenerator"
import="org.jfree.chart.entity.*"
import="org.jfree.data.category.*"
import="org.jfree.util.*"
%>
<%
String bookType[] = ...{"社科类", "文学类", "体育类", "少儿类"};
String week[] = ...{"第1周", "第2周", "第3周", "第4周"};
String chartTitle = "各周图书销量";
// 创建数据集
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
// 构建数据
int bookSales;
for (int i = 0; i < bookType.length; i++) ...{
for (int j =0 ; j < week.length; j++) ...{
bookSales = 1 + (int)(Math.random() * 1000);
dataset.addValue(bookSales, bookType[i], week[j]);
}
}
// 获取JFreeChart对象
JFreeChart chart = ChartFactory.createMultiplePieChart (
chartTitle, // 图表标题
dataset, // 数据集
TableOrder.BY_COLUMN, // 指定被提取数据的顺序
false, // 是否包含图例
true, // 是否包含提示工具
false // 是否包含url
);
// 创建图像
int width = 800, height = 600;
// 获取PiePlot对象
MultiplePiePlot multiPlot = (MultiplePiePlot) chart.getPlot();
JFreeChart obj = multiPlot.getPieChart();
PiePlot plot = (PiePlot) obj.getPlot();
// 设置标签格式
plot.setLabelGenerator(new StandardPieItemLabelGenerator("{0} = {1} ({2})", NumberFormat.getNumberInstance(),
new DecimalFormat("0.00%")));
// 分离圆弧
for (int i = 0; i < week.length; i++)
...{
plot.setExplodePercent(i, 0.05);
}
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
// 设置图片生成格式
String fileName = ServletUtilities.saveChartAsPNG(chart, width, height, info, session);
// 设置图片生成路径
String graphURL = request.getContextPath() + "/servlet/org.jfree.chart.servlet.DisplayChart?filename=" + fileName;
%>
<html>
<head>
<title><%= chartTitle %></title>
</head>
<body>
<p align="center">
<img src="<%= graphURL %>" border="1" />
</p>
</body>
</html>
- jfreechart生成Multiple Pie Chart
- chart and pie
- flex3.0 chart pie
- dojo.Chart2D----Pie chart
- Pie Chart "Key"
- Silverlight Pie Chart
- ExtJS - Pie Chart
- Pie Chart 学习例子
- easy-pie-chart
- CodeProject: 3D Pie Chart.
- JfreeChart在Redhat AS 3 下生成的chart里中文不能正常显示的解决方案
- open flash chart with struts2 pie
- Set Height and Width Pie Chart
- Android报表库aChartEngine-pie chart
- JQuery flot pie chart plugin简单例子
- Android报表库aChartEngine系列(pie chart)
- Pie Chart——饼状图控件
- Kibana displays customized percentage in pie chart
- .NET中的常用接口
- 初学Ajax
- 看《夜宴》
- 用Python来烹调大餐
- .NET中的数据结构
- jfreechart生成Multiple Pie Chart
- .NET 泛型的特殊使用
- nullable generic structure
- CAPXOUS AutoComplete 1.2.5 自动完成 AJAX 破解版 注册版
- 关于参加考试的一点想法以及我的系分经历
- 婚礼上,新郎的一段精彩表白
- .net 服务器端生成alert/confim 消息
- gc的用法
- 从javascript语言本身谈项目实战