使用JFreeChart生成热点图表
来源:网络 更新时间:2014-12-3
<一>前言:
JFreeChart是开放源代码站点SourceForge.net上的一个Java项目。它的功能十分强大,能创建饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等,并可生成PNG或JPG图片格式文件。
本人在学习过程中发现,网上很多文章都是讲一些JFreeChart的基本应用,而对JFreeChart生成热点图表这样常用的功能虽有所提及却没有一个完整的例子,所以我就写一个简单示例供大家参考,希望对大家的学习有所帮助。
<二>示例说明:
假设有一个关于程序员北京,上海,广洲三地程序员学历,开发语言,薪金情况的调查。首先要以饼图显示程序员学历的分布情况(index.JSP)。点击饼图的每一部分会以柱状图显示该层次程序员所用开发语言和薪金的情况(barview.jsp)。重点演示怎样在饼图上添加链接。
<三>准备工作:
1.下载最新版本的JFreeChart,当前为jfreechart-1.0.0-rc1
下载地址:http://www.jfree.org/jfreechart/index.html
2.解压文件,将jfreechart-1.0.0-rc1/lib下的jcommon-1.0.0-rc1.jar,jfreechart-1.0.0-rc1.jar复制到Web应用的lib目录下。
3.在web.XML文件中增加以下内容:
<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>/servletDisplayChart</url-pattern>
</servlet-mapping>
<四>饼图页面代码(index.jsp)
<%@pagecontentType="text/html;charset=GBK"%>
<%@pageimport="org.jfree.data.general.DefaultPieDataset"%>
<%@pageimport="org.jfree.chart.*"%>
<%@pageimport="org.jfree.chart.plot.*"%>
<%@pageimport="org.jfree.chart.servlet.ServletUtilities"%>
<%@pageimport="org.jfree.chart.labels.StandardPieItemLabelGenerator"%>
<%@pageimport="org.jfree.chart.urls.StandardPieURLGenerator"%>
<%@pageimport="org.jfree.chart.entity.StandardEntityCollection"%>
<%@pageimport="java.io.*"%>
<HTML>
<HEAD>
<METAhttp-equiv=Content-Typecontent="text/html;charset=GBK">
<TITLE>nacl_zhuang@hotmail.com</TITLE>
</HEAD>
<BODY>
<%
DefaultPieDatasetdata=newDefaultPieDataset();
data.setValue("高中以下",370);
data.setValue("高中",1530);
data.setValue("大专",5700);
data.setValue("本科",8280);
data.setValue("硕士",4420);
data.setValue("博士",80);
PiePlot3Dplot=newPiePlot3D(data);//3D饼图
plot.setURLGenerator(newStandardPieURLGenerator("barview.jsp"));//设定链接
JFreeChartchart=newJFreeChart("",JFreeChart.DEFAULT_TITLE_FONT,plot,true);
chart.setBackgroundPaint(java.awt.Color.white);//可选,设置图片背景色
chart.setTitle("程序员学历情况调查表");//可选,设置图片标题
plot.setToolTipGenerator(newStandardPieItemLabelGenerator());
StandardEntityCollectionsec=newStandardEntityCollection();
ChartRenderingInfoinfo=newChartRenderingInfo(sec);
PrintWriterw=newPrintWriter(out);//输出MAP信息
//500是图片长度,300是图片高度
Stringfilename=ServletUtilities.saveChartASPNG(chart,500,300,info,session);
ChartUtilities.writeImageMap(w,"map0",info,false);
StringgraphURL=request.getContextPath() "/servlet/DisplayChart?filename=" filename;