使用jfreechart创建图形报表:
1. 建立数据集:每一种图形都有自己的dataset,如:饼图对应的接口是PieDataSet代码如下:
DefaultPieDataset data = new DefaultPieDataset();
data.set(mm,tt);
String ss[]=infoStr.split(",");
for (int n=0;n<ss.length;n++)
{ String ssPart[]=ss[n].split("#");
int tt=Integer.parseInt(ssPart[1]);
String mm=ssPart[0];
data.set(mm,tt);
}
2. 建立用于绘制图表的JFreeChart类:
JFreeChart chart= new JFreeChart("",JFreeChart.DEFAULT_TITLE_FONT, plot, true);
JFreeChart chart =ChartFactory.createPieChart(title, piedata, true, true, true);
3. 将图标输出到指定的目标:
String fileName = ServletUtilities.saveChartAsJPEG(chart,400,300,null,null);
在jsp中绘制图表:
1. 绘制柱状图:
(1)创建绘制主装图需要的数据集:
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.add(300, "北京", "苹果");
dataset.add(200, "北京", "西瓜");
dataset.add(500, "北京", "葡萄");
dataset.add(340, "北京", "芒果");
dataset.add(280, "北京", "香蕉");
(2)创建jFreeChart组件的图标对象
JFreeChart chart = ChartFactory.createBarChart3D("水果销量统计图",// 图表标题
"水果",//X轴的显示标题
"销量",//Y轴的显示标题
dataset,// 数据集
PlotOrientation.VERTICAL,// 图表方向:水平、垂直
false,// 是否包含图例
false,//是否包含提示
false//是否包含URL
);
(3)设置图表的生成格式:
设置图表的各种属性,例如背景色,每个柱的颜色等,可以通过CategoryPlot对象完成。
// 设置图表的背景颜色
chart.setBackgroundPaint(new Color(207, 225, 235));
// 获得CategoryPlot对象的引用,用于设置更多的自定义绘制属性
CategoryPlot plot = chart.getCategoryPlot();
plot.setBackgroundPaint(new Color(246, 208, 146));
plot.setDomainGridlinePaint(Color.BLACK);
plot.setDomainGridlinesVisible(true);
plot.setRangeGridlinePaint(Color.RED);
// 设置横轴标题文字的旋转方向
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setCategoryLabelPositions(
CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 6.0)
);
(4)设置图表的文件名及类型:
// 设置图片生成路径
String fileName = ServletUtilities.saveChartAsJPEG(chart,400,300,null,null);
(5)设置图表的浏览路径
String url =request.getContextPath()+"/DisplayChart?filename=" + fileName;
(6)在jsp页面中调用
<img src="<%=url%>" border=1>
(7)在web.xml中配置浏览图表所要调用的servlet。
<servlet>
<servlet-name>DisplayChart</servlet-name>
<servlet-class>
org.jfree.chart.servlet.DisplayChart
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DisplayChart</servlet-name>
<url-pattern>/DisplayChart</url-pattern>
</servlet-mapping>
2. 完整的实例代码:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="org.jfree.chart.ChartFactory,
org.jfree.chart.JFreeChart,
org.jfree.chart.plot.PlotOrientation,
org.jfree.chart.servlet.ServletUtilities,
org.jfree.data.category.DefaultCategoryDataset,
org.jfree.chart.ChartUtilities"%>
<%
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.add(300, "北京", "苹果");
dataset.add(200, "北京", "西瓜");
dataset.add(500, "北京", "葡萄");
dataset.add(340, "北京", "芒果");
dataset.add(280, "北京", "香蕉");
JFreeChart chart = ChartFactory.createBarChart3D("水果销量统计图",// 图表标题
"水果",//X轴的显示标题
"销量",//Y轴的显示标题
dataset,// 数据集
PlotOrientation.VERTICAL,// 图表方向:水平、垂直
false,// 是否包含图例
false,//是否包含提示
false//是否包含URL
);
String fileName = ServletUtilities.saveChartAsJPEG(chart,800,600,null,null);
//返回系统目录
String url =request.getContextPath()+"/DisplayChart?filename=" + fileName;
%>
<html>
<head>
<title>JFreeChart Example </title>
</head>
<body>
<p align="center">
<img src="<%=url%>" border=1>
</p>
</body>
</html>