`
chaoyi
  • 浏览: 291223 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Spring+JFreeChart 自动生成统计图

 
阅读更多

图示:

 

web.xml 配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<display-name>Spring12JFreeChart</display-name>
	<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>/servlet/DisplayChart</url-pattern>
	</servlet-mapping>
	<servlet>
		<servlet-name>freechart</servlet-name>
		<servlet-class>cn.jfreeChart.BankPieChart</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>freechart</servlet-name>
		<url-pattern>/image/bankpiechart</url-pattern>
	</servlet-mapping>
</web-app>

 

1.jsp 3D柱形图

<%@ page contentType="text/html; charset=utf-8"%>
<%@ page import="org.jfree.chart.JFreeChart" %>
<%@ page import="org.jfree.chart.plot.PlotOrientation" %>
<%-- 可以将形成的图片保存成文件 --%>
<%@ page import="org.jfree.chart.servlet.ServletUtilities" %>
<%@ page import="org.jfree.chart.title.TextTitle" %>
<%@ page import="java.awt.Font" %>
<%@ page import="org.jfree.chart.ChartFactory" %>
<%@ page import="org.jfree.data.category.DefaultCategoryDataset" %>
<%@ page import="java.awt.GradientPaint" %>
<%@ page import="java.awt.Color" %>
<%@ page import="org.jfree.chart.renderer.category.BarRenderer" %>
<%@ page import="org.jfree.chart.plot.CategoryPlot" %>
<%@ page import="org.jfree.chart.labels.StandardCategoryItemLabelGenerator" %>
<%@ page import="org.jfree.chart.axis.ValueAxis" %>
<%@ page import="org.jfree.chart.axis.CategoryAxis" %>
<%
	//1.建立一个默认的类型数据集
	DefaultCategoryDataset dataset = new DefaultCategoryDataset();
	//数值,行比较器,列比较器,列入表中
	dataset.addValue(150, "广东", "蛇");
	dataset.addValue(160, "广东", "龙");
	dataset.addValue(170, "广东", "马");
	dataset.addValue(180, "广东", "狗");
	dataset.addValue(130, "广东", "虎");
	dataset.addValue(150, "广东", "凤");
	dataset.addValue(170, "广东", "猫");
	String title = "广州地区兽类销量统计图";
	//2.用 ChartFactory 工厂来建立一个 3D 的柱形图
	//参数:图的标题,水平标题,垂直标题,数据集,图表方向,是否包含图例,是否包含提示,是否包含 URL
	JFreeChart chart = ChartFactory.createBarChart3D(
	title, "兽类", "销量", dataset, PlotOrientation.VERTICAL, false, false, false);
	//以下代码可选
	chart.setTitle(new TextTitle(title, new Font("微软雅黑",Font.ITALIC,24)));
	CategoryPlot plot = chart.getCategoryPlot();
	//高度
	int height = 400;
	//条形有个渐变的效果
	GradientPaint gp = new GradientPaint(0,0,Color.BLACK,0,height,Color.RED);
	BarRenderer renderer = (BarRenderer)plot.getRenderer();
	renderer.setSeriesPaint(0, gp);
	//设置每个条的宽度
	renderer.setMaximumBarWidth(0.08);
	//设置条形上显示数字
	renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
 	renderer.setBaseItemLabelsVisible(true);
 	renderer.setBaseItemLabelPaint(Color.WHITE);
 	//设置 Y 向的汉字
 	ValueAxis y = plot.getRangeAxis();
 	y.setLabelFont(new Font("宋体",Font.PLAIN,14));
 	//设置 X 向的汉字
 	CategoryAxis x = plot.getDomainAxis();
 	x.setLabelFont(new Font("宋体",Font.PLAIN,14));
 	//X 轴汉字
 	x.setTickLabelFont(new Font("微软雅黑", Font.PLAIN,14));
 	//3.返回一个已经建立好的文件名,放在 temp 临时文件夹中,设置 session , 每个 session 会产生一个图形文件,tomcat 关闭后自动删除
 	String fileName = ServletUtilities.saveChartAsPNG(chart, 550, height, session);
 	//4.DisplayChart 是 org.jfree.chart.servlet 包中的一个HttpServlet,使用前要在 web.xml 中布署
 	String url = request.getContextPath()+("/servlet/DisplayChart?filename="+fileName);;
 %>
<html>
<head>
<title>兽类销售统计图</title>
</head>
<body style="background-color: #fff;">
	<p style="text-align: center;">
		<img alt="兽类销量统计图" src="<%=url%>"/>
	</p>
</body>
</html>

 

效果图:

 
 2.jsp 3D柱形图2

<%@ page contentType="text/html; charset=utf-8"%>
<%@ page import="org.jfree.chart.JFreeChart" %>
<%-- 设置图表的方向包 --%>
<%@ page import="org.jfree.chart.plot.PlotOrientation" %>
<%-- 可以将形成的图片保存成文件 --%>
<%@ page import="org.jfree.chart.servlet.ServletUtilities" %>
<%@ page import="org.jfree.chart.ChartFactory" %>
<%@ page import="org.jfree.chart.axis.CategoryAxis" %>
<%@ page import="org.jfree.data.category.DefaultCategoryDataset" %>
<%@ page import="org.jfree.chart.axis.AxisLocation" %>
<%@ page import="java.awt.*" %>
<%@ page import="org.jfree.chart.axis.ValueAxis" %>
<%@ page import="org.jfree.chart.title.TextTitle" %>
<%@ page import="org.jfree.chart.plot.CategoryPlot" %>
<%@ page import="org.jfree.chart.renderer.category.BarRenderer" %>
<%@ page import="org.jfree.chart.labels.StandardCategoryItemLabelGenerator" %>
<%@ page import="org.jfree.chart.labels.ItemLabelPosition" %>
<%@ page import="org.jfree.chart.labels.ItemLabelAnchor" %>
<%@ page import="org.jfree.ui.TextAnchor" %>
<%@ page import="org.jfree.chart.title.LegendTitle" %>
<%
	//1.建立一个默认的类型数据集
	DefaultCategoryDataset dataset = new DefaultCategoryDataset();
	//数值,行比较器,列比较器,列入表中
	dataset.addValue(550, "广东", "蛇");
	dataset.addValue(560, "广东", "龙");
	dataset.addValue(570, "广东", "马");
	dataset.addValue(580, "广东", "狗");
	dataset.addValue(530, "广东", "虎");
	dataset.addValue(650, "广东", "凤");
	dataset.addValue(670, "广东", "猫");
	dataset.addValue(650, "广西", "蛇");
	dataset.addValue(660, "广西", "龙");
	dataset.addValue(630, "广西", "虎");
	dataset.addValue(450, "广西", "凤");
	dataset.addValue(470, "广南", "猫");
	dataset.addValue(450, "广南", "蛇");
	dataset.addValue(460, "广南", "龙");
	String title = "广州地区兽类销量统计图";
	//2.用 ChartFactory 工厂来建立一个 3D 的柱形图
	//参数:图的标题,水平标题,垂直标题,数据集,图表方向,是否包含图例,是否包含提示,是否包含 URL
	JFreeChart chart = ChartFactory.createBarChart3D(
	title, "兽类", "销量", dataset, PlotOrientation.VERTICAL, true, true, true);
	chart.setTitle(new TextTitle(title, new Font("微软雅黑",Font.ITALIC,24)));
	//得到图表的 CategoryPlot 对象,设置更多的属性
	CategoryPlot plot = chart.getCategoryPlot();
	plot.setNoDataMessage("没有数据");
	plot.setBackgroundPaint(Color.lightGray);//设定图表数据显示部分背景色
	plot.setDomainGridlinePaint(Color.white);//横坐标网络线白色
	plot.setDomainGridlinesVisible(true);//可见
	plot.setRangeGridlinePaint(Color.white);//纵坐标网络线白色
	//设置地区、销量显示位置
	plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
	//改变柱子的颜色
	BarRenderer renderer = (BarRenderer)plot.getRenderer();
	renderer.setSeriesPaint(0, Color.decode("#ff6600"));//给 series1 Bar
	renderer.setSeriesPaint(1, Color.decode("#003399"));//给 series2 Bar
	renderer.setSeriesPaint(2, Color.decode("#cc0000"));//给 series3 Bar
	renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
 	renderer.setBaseItemLabelsVisible(true);
 	ItemLabelPosition itemLabelPosition= new ItemLabelPosition(ItemLabelAnchor.CENTER,
 	TextAnchor.CENTER,TextAnchor.CENTER,0.0D);
 	renderer.setBasePositiveItemLabelPosition(itemLabelPosition);
	//得到轴对象
 	ValueAxis y = plot.getRangeAxis();//有值的轴
 	//设置最小从 150 开始,而不是从 0 开始
 	y.setRange(100d, 700d);//设置范围
 	y.setTickLabelFont(new Font("Arial",Font.BOLD,12));//设置方向的字体
 	y.setLabelFont(new Font("黑体",Font.PLAIN,14));
 	//设置 X 轴
 	CategoryAxis x = plot.getDomainAxis();//设置 X 轴的字体
 	x.setTickLabelFont(new Font("宋体",Font.BOLD,12));//设置 X 轴的字体
 	x.setLabelFont(new Font("黑体",Font.PLAIN,14));
 	//图例
 	LegendTitle legendTitle = chart.getLegend();
 	legendTitle.setItemFont(new Font("宋体",Font.BOLD,12));//设置图例的字体
 	//3.返回一个已经建立好的文件名,放在 temp 临时文件夹中,设置 session , 每个 session 会产生一个图形文件,tomcat 关闭后自动删除
 	String fileName = ServletUtilities.saveChartAsPNG(chart, 640, 550, session);
 	//4.DisplayChart 是 org.jfree.chart.servlet 包中的一个HttpServlet,使用前要在 web.xml 中布署
 	String url = request.getContextPath()+("/servlet/DisplayChart?filename="+fileName);;
 %>
<html>
<head>
<title>兽类销售统计图</title>
</head>
<body style="background-color: #fff;">
	<p style="text-align: center;">
		<img alt="兽类销售统计图" src="<%=url%>"/>
	</p>
</body>
</html>

 

效果图:

 

BankPieChart 通过Servlet输出饼状图

package cn.jfreeChart;
import java.awt.Font;
import java.io.IOException;
import java.text.DecimalFormat;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.labels.StandardPieToolTipGenerator;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;
/**
 * Servlet 直接输出图表
 * */
@SuppressWarnings("serial")
public class BankPieChart extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		serivce(request, response);
	}
	protected void serivce(HttpServletRequest request, 
			HttpServletResponse response) throws ServletException,
			IOException {
		String title = "世界人口在某公司本占有率";
		response.setContentType("image/jpeg");
		DefaultPieDataset data = getDataset();
		//建立的图表对象
		JFreeChart chart = ChartFactory.createPieChart3D(title, data,
				true, false, false);
		chart.setTitle(new TextTitle(title, new Font("微软雅黑", Font.ITALIC, 24)));
		PiePlot plot = (PiePlot) chart.getPlot();
		plot.setLabelFont(new Font("黑体",Font.PLAIN,12));
		//设置饼形图的百分比
		plot.setToolTipGenerator(new StandardPieToolTipGenerator("{0}\n{1}-({2})", 
				new DecimalFormat("0"),new DecimalFormat("#.##%")));
		plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}\n{1}-({2})", 
				new DecimalFormat("0"),new DecimalFormat("#.##%")));
		chart.getLegend().setItemFont(new Font("宋体",Font.BOLD,13));
		//在这里是用 write 到输出流中,而不是用 save
		ChartUtilities.writeChartAsPNG(response.getOutputStream(), chart, 500, 350);
	}
	//得到数据的类
	private static DefaultPieDataset getDataset(){
		//建立一个默认的种类数据集
		DefaultPieDataset dataset = new DefaultPieDataset();
		//第一个参数为名称,第二个参数是 double 类型,并非百分比
		dataset.setValue("中国人口", 500);
		dataset.setValue("美国人口", 400);
		dataset.setValue("欧洲人口", 300);
		dataset.setValue("日本人口", 100);
		dataset.setValue("非洲人口", 300);
		return dataset;
	}

}

 

3.jsp 饼状图

<%@ page contentType="text/html; charset=utf-8"%>
<html>
<head>
<title>人口</title>
</head>
<body style="background-color: #fff;">
	<p style="text-align: center;">
		<img alt="人口" src="image/bankpiechart">
	</p>
</body>
</html>

 

效果图:

 

 

 

  • 大小: 30.1 KB
  • 大小: 46.4 KB
  • 大小: 66.1 KB
  • 大小: 44 KB
分享到:
评论

相关推荐

    Spring+Struts+JFreeChart 自动生成统计图

    NULL 博文链接:https://chaoyi.iteye.com/blog/2173739

    用java实现word统计报表和图形统计的导出

    用java实现word统计报表和图形统计的导出

    onlineexam:在线考试

    主要功能管理员对年级、专业、班级进行管理,教师出题,根据已有的题或新出的题设计试卷,切换试卷的状态,使用jfreechart生成分数区间以及最高分最低分统计图,利用poi导出一套试卷的成绩单,查看某一道题的正答率...

    基于jbpm与activiti的工作流平台技术架构介绍

    27.流程任务的工作日设置(用于统计流程任务执行效率) 28.任务监控管理 29.流程委办、转办 2.BPMX3多层架构 系统采用多层的系统架构进行功能开发,有利于代码功能责任分开,同时有利于不同开发人员的分工及合作,...

    JAVA上百实例源码以及开源项目源代码

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...

    java开源包1

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包11

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包2

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包3

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包6

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包5

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包10

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包4

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包8

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包7

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

Global site tag (gtag.js) - Google Analytics