您的位置:首页 > 其它

jfreechart产生饼状图,折线图,柱状图

2015-06-02 15:50 169 查看
第一步:导入三个JAR包:gnujaxp.jar(在SSH整合时会出现冲突可不要,不影响使用),jcommon-1.0.0.jar,jfreechart-1.0.1.jar

第二步:创建工具类ChartUtil

package com.wnkj.util;

import java.awt.Color;

import java.io.PrintWriter;

import javax.servlet.http.HttpSession;

import org.jfree.chart.ChartFactory;

import org.jfree.chart.ChartRenderingInfo;

import org.jfree.chart.ChartUtilities;

import org.jfree.chart.JFreeChart;

import org.jfree.chart.axis.AxisLocation;

import org.jfree.chart.entity.StandardEntityCollection;

import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;

import org.jfree.chart.plot.CategoryPlot;

import org.jfree.chart.plot.PlotOrientation;

import org.jfree.chart.renderer.category.BarRenderer3D;

import org.jfree.chart.servlet.ChartDeleter;

import org.jfree.chart.servlet.ServletUtilities;

import org.jfree.data.category.CategoryDataset;

import org.jfree.data.category.DefaultCategoryDataset;

import org.jfree.data.general.DefaultPieDataset;

public class ChartUtil {

// 产生时间序列图,返回图片名称

public static String generatePieChart(DefaultPieDataset dataset,String title,int width,int height,HttpSession
session, PrintWriter pw) {

String filename = null;

try {

if (session != null)

{

ChartDeleter deleter = (ChartDeleter)session.getAttribute("JFreeChart_Deleter");

session.removeAttribute("JFreeChart_Deleter");

session.setAttribute("JFreeChart_Deleter", deleter);

}

JFreeChart chart = ChartFactory.createPieChart3D(

title, //统计图名字

dataset, // 数据集

true,

true,

false );

ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());

filename = ServletUtilities.saveChartAsPNG(chart, width, height, info, session);

ChartUtilities.writeImageMap(pw, filename, info,true);

pw.flush();

} catch (Exception e) {

e.printStackTrace(System.out);

filename = "picture_error.png"; }

return filename;

}

public static String generateBarChart(DefaultCategoryDataset dataset,String title,String title1,String
title2,int width,int height,HttpSession session, PrintWriter pw) {

String filename = null;

try {

if (session != null)

{

ChartDeleter deleter = (ChartDeleter)session.getAttribute("JFreeChart_Deleter");

session.removeAttribute("JFreeChart_Deleter");

session.setAttribute("JFreeChart_Deleter", deleter);

}

PlotOrientation plo = PlotOrientation.VERTICAL;//一定要有,

JFreeChart chart = ChartFactory.createBarChart3D(

title, //统计图的名字

title1, //X轴名字

title2, // Y轴名字

dataset, // 数据集,注意:跟饼图的数据集不一样

plo,

true,

false,

false );

//-------------------------------------------------------------------------

//显示每个柱的数值

CategoryPlot plot = chart.getCategoryPlot();

BarRenderer3D renderer = new BarRenderer3D();

renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());

renderer.setItemLabelsVisible(true);

//设置每种水果代表的柱的颜色

renderer.setSeriesPaint(0, new Color(0,0,255));

renderer.setSeriesPaint(1, new Color(0,100,255));

renderer.setSeriesPaint(2, Color.GREEN);

plot.setRenderer(renderer);

//设置柱的透明度,数值时float型

plot.setForegroundAlpha(0.6f);

//设置轴名的显示位置

plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);

plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);

//-------------------------------------------------------------------------------

ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());

filename = ServletUtilities.saveChartAsPNG(chart, width, height, info, session);

ChartUtilities.writeImageMap(pw, filename, info,true);

pw.flush();

} catch (Exception e) {

e.printStackTrace(System.out);

filename = "picture_error.png"; }

return filename;

}

public static String generateLineChart(DefaultCategoryDataset dataset,String title,String title1,String
title2,int width,int height,HttpSession session, PrintWriter pw){

String filename = null;

try {

if (session != null)

{

ChartDeleter deleter = (ChartDeleter)session.getAttribute("JFreeChart_Deleter");

session.removeAttribute("JFreeChart_Deleter");

session.setAttribute("JFreeChart_Deleter", deleter);

}

JFreeChart chart = ChartFactory.createLineChart(

title, // 折线图的名字

title1, // X轴的名字

title2, // Y轴的名字

dataset, // 数据集

PlotOrientation.VERTICAL,

true,

true,

false

);

ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());

filename = ServletUtilities.saveChartAsPNG(chart, width, height, info, session);

ChartUtilities.writeImageMap(pw, filename, info,true);

pw.flush();

} catch (Exception e) {

e.printStackTrace(System.out);

filename = "picture_error.png"; }

return filename;

}

}

第三步:封装数据集 (servlet层)

1.饼状图封装数据集DefaultPieDataset
defaultpiedataset = new DefaultPieDataset();

defaultpiedataset.setValue("yiyue", 300);

defaultpiedataset.setValue("eryue", 260);

defaultpiedataset.setValue("sanyue", 400);

2.柱状图封装数据集String
[] title = {"苹果","李子","香蕉"};

String [] title1 = {"上海","广州","深圳"};

double [][] shu =new double[][] {{100,200,300},{200,300,400},{300,400,500}};

DefaultCategoryDataset defaultCategoryDatase =(DefaultCategoryDataset) DatasetUtilities.createCategoryDataset(title,
title1, shu);

3.折线图封装数据集DefaultCategoryDataset
linedataset = new DefaultCategoryDataset();

// 各曲线名称

String series1 = "冰箱";

String series2 = "彩电";

String series3 = "洗衣机";

// 横轴名称(列名称)

String type1 = "1月";

String type2 = "2月";

String type3 = "3月";

linedataset.addValue(0.0, series1, type1);

linedataset.addValue(4.2, series1, type2);

linedataset.addValue(3.9, series1, type3);

linedataset.addValue(1.0, series2, type1);

linedataset.addValue(5.2, series2, type2);

linedataset.addValue(7.9, series2, type3);

linedataset.addValue(2.0, series3, type1);

linedataset.addValue(9.2, series3, type2);

linedataset.addValue(8.9, series3, type3);

第四步:在JSP页面引用

1.饼状图的引用

<%

DefaultPieDataset piedataset=(DefaultPieDataset)request.getAttribute("piedataset");

// 用ChartUtil工具类产生图片 (饼图)

String p = ChartUtil.generatePieChart(piedataset," 项目收支线图",500,300,null, new PrintWriter(out));

String p1 = request.getContextPath() + "/servlet/DisplayChart?filename=" + p;

%>

<td><img src="<%= p1 %>" width=500 height=300 border=0 usemap="#<%= p %>"></td>

2.柱状图和折线图的引用

DefaultCategoryDataset defaultCategoryDatase =(DefaultCategoryDataset) request.getAttribute("list");

String p = ChartUtil.generateBarChart(defaultCategoryDatase," 水果销量统计图","水果","销量",500,300,null,
new PrintWriter(out));

String p1 = request.getContextPath() + "/servlet/DisplayChart?filename=" + p;

%>

<td><img src="<%= p1 %>" width=500 height=300 border=0 usemap="#<%= p %>"></td>

第五步:在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>/servlet/DisplayChart</url-pattern>

</servlet-mapping>

第六步:打开浏览器测试吧

记得将编码格式统一成utf-8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: