JFreeChart初学者入门实例详细解析(一)

转载 2005年05月26日 11:43:00
JFreeChart,开放源码的Java图表生成组件(基于LGPL Licence),可以创建饼图、曲线图、柱状图、甘特图,生成PNG,JPG等图片格式文件。当前最新版本为0.9.11,下面就是一张JFreeChart生成的统计图。本文讲解如何在Web利用JFreeChart生成饼状统计图。



一、安装配置

当前最新版本为0.9.11

下载jfreechart-0 .9.11.zip

下载jfreechar t-0.9.11.tar.gz

解压缩文件,jfreechart-0.9.11目录下的jfreechart-0.9.11.jar和 lib/jcommon-0.8.6.jar,lib/gnujaxp.jar都是开发运行需要的文件,把这三个文件放置到应用的lib目录下。

然后在web.xml文件中增加以下内容:

<servlet>
<servlet-name>DisplayChart</servlet-name>
<servlet-class>org.jfree.chart.
servlet.DisplayChart</servlet-class>
</servlet>


安装配置完成,现在可以写程序生成我们需要的统计图了。

二、开始,在JSP中生成饼型统计图

<%@ page contentType=
"text/html;charset=GBK"%>
<%@ page import=
"org.jfree.data.DefaultPieDataset"%>
<%@ page import=
"org.jfree.chart.JFreeChart"%>
<%@ page import=
"org.jfree.chart.plot.PiePlot"%>
<%@ page import=
"org.jfree.chart.
ChartRenderingInfo"%>
<%@ page import=
"org.jfree.chart.servlet.
ServletUtilities"%>
<%@ page import=
"org.jfree.chart.urls.
StandardPieURLGenerator"%>
<%@ page import=
"org.jfree.chart.entity.
StandardEntityCollection"%>
<%

DefaultPieDataset data 
= new DefaultPieDataset();
data.setValue("六月",500);
data.setValue("七月",580);
data.setValue("八月",828); 

PiePlot plot = new PiePlot(data);

JFreeChart chart = new JFreeChart
("",JFreeChart.DEFAULT_TITLE_FONT,
plot, true);
chart.setBackgroundPaint
(java.awt.Color.white);
//可选,设置图片背景色
chart.setTitle
("www.SenTom.net 网站访问统计表");
//可选,设置图片标题
ChartRenderingInfo info 
= new ChartRenderingInfo
(new StandardEntityCollection());
//500是图片长度,300是图片高度
String filename =
ServletUtilities.saveChartAsPNG
(chart, 500, 300, info, session);
String graphURL =
request.getContextPath() +
"/servlet/DisplayChart?filename="
+ filename; 
%>
<HTML>
<HEAD>
       <TITLE>www.sentom.net</TITLE>
</HEAD>
<BODY>
<P ALIGN="CENTER">
<ccid_file values="<%=" graphURL % />"
width=500 height=300 border=0 
usemap="#<%= filename 
%>">
</P>
</BODY>
</HTML>


就这么简单,生成的饼状图如下



三、JSP+JAVABEAN生成饼状统计图

WebChart.java 
 
/*
 * Created on 2003-9-9
 * http://www.sentom.net
 * To change the template 
 for this generated file go to
 * Window>Preferences>Java>Code
 Generation>Code and Comments
 */
package net.sentom.chart;

import java.awt.Insets;
import java.awt.Font;
import java.io.PrintWriter;
import javax.servlet.http.HttpSession;
import org.jfree.data.*;
import org.jfree.chart.*;
import org.jfree.chart.plot.*;
import org.jfree.chart.entity.*;
import org.jfree.chart.urls.*;
import org.jfree.chart.servlet.*;
import org.jfree.chart.labels.
StandardPieToolTipGenerator;

/**
 * @author sentom
 *
 * To change the template for
 this generated type comment go to
 * Window>Preferences>Java>Code
 Generation>Code and Comments
 */
public class WebChart
{
	private DefaultPieDataset data =
	new DefaultPieDataset();
	
	public void setValue
	(String key,double value)
	{
		data.setValue(key,value);
	}
	
	public String generatePieChart
	(String title, HttpSession session, 
	PrintWriter pw)
	{
		String filename = null;
		try
		{
//创建chart对象
PiePlot plot =
new PiePlot(data);
plot.setInsets
(new Insets(0, 5, 5, 5));
//在统计图片上建连结
plot.setURLGenerator
(new StandardPieURLGenerator
("link.jsp","section"));
plot.setToolTipGenerator
(new StandardPieToolTipGenerator());
JFreeChart chart = new JFreeChart
("", JFreeChart.DEFAULT_TITLE_FONT, 
plot, true);
chart.setBackgroundPaint
(java.awt.Color.white);
//设置图片的背景色
Font font = new Font
("黑体",Font.CENTER_BASELINE,20);
//设置图片标题的字体和大小
TextTitle _title =
new TextTitle(title);
_title.setFont(font);
chart.setTitle(_title);
//把生成的图片放到临时目录
ChartRenderingInfo info =
new ChartRenderingInfo(new 
StandardEntityCollection());
//500是图片长度,
300是图片高度
filename = ServletUtilities.
saveChartAsPNG
(chart, 500, 300, info, 
session);
ChartUtilities.writeImageMap
(pw, filename, info);
			pw.flush();
} catch (Exception e)
{
System.out.println
("Exception - " + e.toString());
e.printStackTrace
(System.out);
filename = 
"public_error_500x300.png";
		}
		return filename;
	}
}


JSP文件

<%@ page contentType=
"text/html;charset=GBK"%>
<%@ page import =
"java.io.PrintWriter" %>
<%@ page import=
"net.sentom.chart.WebChart"%>
<%

WebChart chart = new WebChart();
chart.setValue("六月",500);
chart.setValue("七月",580);
chart.setValue("八月",828);

String filename = 
chart.generatePieChart
("www.SenTom.net 网站访问统计表",
session, new 

PrintWriter(out));
String graphURL = 
request.getContextPath() +
"/servlet/DisplayChart?filename=" 
+ filename;

%>
<HTML>
<HEAD>
	<TITLE>www.sentom.net</TITLE>
</HEAD>
<BODY>
<P ALIGN="CENTER">
	<ccid_file values="<%=" graphURL % />
	" width=500 height=300 
	border=0 usemap="#<%= 

filename %>">
</P>
</BODY>
</HTML>


生成的饼状图如下



四 参考资源

http://sourceforge.net/projects/jfreechart

http://www.jfree.org/jfreechart/index.html

http://www.jfree.org/phpBB2/viewforum.php?f=3

深度学习DeepLearning推荐论文清单 初学者入门推荐学习路线

深度学习DeepLearning papers初学者入门推荐学习论文清单(供下载)—————————————每一位DL初学者都想找到一条卓有成效的学习路线,我推荐的是沿着历史发展路线将前辈们的经典pa...

Oracle初学者入门指南-什么是Metalink?

Oracle初学者入门指南-什么是Metalink? 作者:eygle |English Version 【转载时请以超链接形式标明文章出处和作者信息及本声明】 链接:http://www.e...

Oracle初学者入门指南-什么是Metalink -MOS

Oracle初学者入门指南-什么是Metalink -MOS ? 作者:eygle |English 【转载时请标明出处和作者信息】|【恩墨学院 OCM培训传DBA成功之道】 ...
  • haiross
  • haiross
  • 2013年08月16日 14:43
  • 829

Latex 初学者入门(四)-- 多个作者共享同一个地址

又给老板改格式,其实感觉大多会议都是模板不同,不同主要在于注释,作者,摘要以及引用文献的不同,上次的那篇讲bib数据库的用法,真是倒腾了一整天,不知道为什么一定要使用这种东西,而且老板貌似对人家的风格...

从零开始学习git的一些命令 (初学者入门)

我觉得git的发明人真的是一个天才,不但可以在任意地方搞,而且可以回退任意的版本,也可以回到未来的版本。可以查看每一次修改的版本号码。可以查看修改的内容。 首先你要搞一个文件夹吧。我们直接从从开始...

iOS开发初学者入门 | 第七章:设备和自动布局

原文文档: http://www.jianshu.com/p/b4d0743aea61/comments/942980 在这一章节中,你将会学习如何为不同尺寸设备设计界面,我们会介绍所有的苹果...

Ubuntu 终端命令的使用(初学者入门)

要想使用Ubuntu对命令的使用操作是必不可少的: 首先,进入终端:Ctrl+Alt+t 进入Ubuntu终端 如图1 所示: 图 1 终端界面 我们可以输入:exit 来退出终端 在命令行状态下执...

EDM邮件营销初学者入门技巧

360Email针对从未接触过Email营销的企业,重点讲解邮件营销初学者入门实用技巧,让营销人员不再迷茫,迅速掌握邮件营销方法。   添加个人信息   虽然在主题栏加入用户的名字能够稍微...

<<BASM 初学者入门>> 第 5 课

> 第 5 课 http://www.cnpack.org 翻译:SkyJacker 时间:2007 Welcome to lesson number 5. Today topic is l...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JFreeChart初学者入门实例详细解析(一)
举报原因:
原因补充:

(最多只允许输入30个字)