`
chaoyi
  • 浏览: 309183 次
  • 性别: 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 自动生成统计图

    本项目“Spring+Struts+JFreeChart 自动生成统计图”正是为了解决这样的问题。它结合了三个强大的Java技术框架,使得开发者能够方便地在Web应用中创建动态的、交互式的统计图表。 Spring框架作为核心的依赖注入(DI...

    S2SH+jfreechart+ajax动态生成统计图

    下面是实现动态生成统计图的具体步骤: 1. **项目设置**: - 创建一个新的S2SH项目,并配置好相关的框架。 - 将必要的库文件添加到项目的类路径中,包括jfreechart-1.0.14.jar、struts2-jfreechart-plugin-2.2.1....

    spring+struts2+hibernate+ajax+jfreechart 广告管理系统

    5. **JFreeChart库**:JFreeChart是一款开源的Java图表库,可以生成多种类型的图表,如折线图、柱状图、饼图等。在广告管理系统中,JFreeChart用于展示广告投放效果、数据分析等,帮助管理者直观地理解广告数据,...

    投票系统struts2.0+hibernate3.2+spring2.5+sqlserver2005数据库,+JFReeChart饼图,柱状图显示。

    然后,Service层可以利用JFreeChart生成图表,将数据以图形化的方式展现给用户。Spring在整个过程中起到了连接和管理各个组件的作用,确保了应用的稳定性和可维护性。 总的来说,这个投票系统展示了Java企业级开发...

    在Hibernate+Spring+SpringMVC中集成JfreeChart

    base64,${chartImage}" alt="城市人口统计图" /&gt; ``` 通过以上步骤,你就可以在Hibernate+Spring+SpringMVC的环境中成功集成JfreeChart,实现了数据的可视化展示。需要注意的是,这只是一个基本的示例,实际项目中...

    CRM:CRM是基于struts2+spring+hibernate+JfreeChart框架开发的一套客户关系管理系统

    在"CRM-master"这个压缩包中,很可能包含了CRM系统的源代码,包括Struts2的Action类、Spring的配置文件、Hibernate的实体类和映射文件,以及使用JFreeChart生成图表的相关代码。开发者可以通过分析这些代码,了解CRM...

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

    我们可以使用它来根据数据生成统计图形,然后将其嵌入到Word文档中。首先,我们需要创建一个JFreeChart对象,配置其数据源,样式,然后将其转换为图片流,以便于插入到Word文档中。 例如,创建一个简单的柱状图: ...

    使用struts2+spring+hibernate开发的小项目(客户管理系统)

    在这个项目中,Jfreechart可能被用来生成客户的统计报告,比如客户数量按月份的增长趋势图,或者不同类型的客户比例饼图,这些图表可以直观地展示数据,帮助管理者更好地理解和分析客户情况。 项目的文件名"crm...

    JFreeChart学习资料(精心收集)

    2. 数据分析:结合数据库查询结果,生成统计图表,帮助分析数据。 3. 科研报告:在学术论文中使用JFreeChart展示实验结果,增强可读性。 总的来说,JFreeChart是一个功能强大且易用的Java图表库,它能够帮助开发者...

    JfreeChart包下载

    使用JFreeChart生成流量图,可以有效地展示网络流量、用户访问量等统计数据。例如,通过柱状图可以清晰地看出不同时间段的流量高峰;用折线图则可以呈现流量随时间的变化趋势。这种可视化方式对于数据分析和决策制定...

    JfreeChart编码

    JFreeChart库提供了多种图表类型,如饼图、柱状图、线形图、散点图、甘特图等,涵盖了统计分析、科学计算、商业报表等多个领域的图形需求。其API设计直观,适合Java开发者快速上手。 ### 2. 安装与导入 首先,你...

    JFreeChart学习文档

    JFreeChart是一个强大的Java图表库,它能够生成各种类型的高质量图表,包括折线图、柱状图、饼图、散点图、甘特图以及时间序列图表等。这个库广泛应用于数据分析、报表生成和Web应用中,提供丰富的自定义选项,使...

    struts2整合JFreeChart

    Struts2是一个强大的MVC(Model-View-Controller)框架,广泛应用于Java Web开发中,而JFreeChart则是一个用于创建统计图表的开源库。两者整合可以为Web应用提供丰富的图表展示功能,如饼图、柱状图和时间序列图等。...

    jfreechart_数据报表

    在实际应用中,JFreeChart常与其他Java组件结合使用,比如与Swing或JavaFX进行GUI开发,或者与Spring框架集成,实现服务器端图表生成。这使得JFreeChart在Web应用、桌面应用甚至是移动应用中都能发挥其作用。 总的...

    java统计图java统计图

    在Java编程语言中,生成统计图是数据可视化的重要部分,特别是在证券系统中,交易变化的图形展示可以帮助用户直观地理解市场动态。为了实现这个功能,Java提供了多种库和框架,如JFreeChart、JavaFX、Chart.js(通过...

    jfreechart-1.0.5-demo-all

    JFreeChart 是一个流行的 Java 图表库,它提供了丰富的图表类型,包括折线图、柱状图、饼图、散点图、甘特图等,适用于各种数据可视化需求。`jfreechart-1.0.5-demo-all` 包含了 JFreeChart 库的 1.0.5 版本的演示...

    图形生成系统

    后端部分,JFreeChart是一个用于Java的开源图表库,它能够生成多种高质量的2D图表,包括统计图、时间序列图、饼图等。在服务器端,JFreeChart可以接收来自前端的数据,根据这些数据生成图片,并将其作为响应返回给...

Global site tag (gtag.js) - Google Analytics