当前位置: 代码迷 >> Web前端 >> JFreeChart 施用示例
  详细解决方案

JFreeChart 施用示例

热度:918   发布时间:2012-11-09 10:18:47.0
JFreeChart 使用示例

/*java文件*/ 
package com.cn; 

import java.awt.Color; 
import java.awt.Paint; 
import java.awt.RenderingHints; 
import java.io.*; 

import javax.servlet.http.HttpSession; 

import org.jfree.data.category.CategoryDataset; 
import org.jfree.data.category.DefaultCategoryDataset; 
import org.jfree.data.general.DefaultPieDataset; 
import org.jfree.data.general.PieDataset; 
import org.jfree.chart.*; 
import org.jfree.chart.entity.StandardEntityCollection; 
import org.jfree.chart.plot.*; 
import org.jfree.chart.servlet.ServletUtilities; 


public class BarChartDemo { 

/** 
* 饼状图 
*/ 
public static String generatePieChart(HttpSession session, PrintWriter pw,int w, int h){ 
String filename = null; 
PieDataset dataset = getDataSet(); 
JFreeChart chart = ChartFactory.createPieChart3D( 
"水果产量图", // 图表标题 
dataset, // 数据集 
true, // 是否显示图例 
false, // 是否生成工具 
false // 是否生成URL链接 
); 
chart.setBackgroundPaint(Color.pink); 
try { 
/*------得到chart的保存路径----*/ 
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection()); 
filename = ServletUtilities.saveChartAsPNG(chart, w, h, info,session); 
/*------使用printWriter将文件写出----*/ 
ChartUtilities.writeImageMap(pw, filename, info, true); 
pw.flush(); 
} catch (IOException e) { 
e.printStackTrace(); 
} 
return filename; 
} 


/** 
* 柱状图 
*/ 
public static String generateBarChart(HttpSession session, PrintWriter pw,int w, int h){ 
String filename = null; 
CategoryDataset dataset = getDataSet2(); 
JFreeChart chart = ChartFactory.createBarChart3D( 
"水果产量图", // 图表标题 
"水果", // 目录轴的显示标签 
"产量", // 数值轴的显示标签 
dataset, // 数据集 
PlotOrientation.VERTICAL, // 图表方向:水平、垂直 
true, // 是否显示图例(对于简单的柱状图必须是false) 
false, // 是否生成工具 
false // 是否生成URL链接 
); 
try { 
/*------得到chart的保存路径----*/ 
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection()); 
filename = ServletUtilities.saveChartAsPNG(chart, w, h, info,session); 
/*------使用printWriter将文件写出----*/ 
ChartUtilities.writeImageMap(pw, filename, info, true); 
pw.flush(); 
} catch (IOException e) { 
// TODO 自动生成 catch 块 
e.printStackTrace(); 
} 
return filename; 
} 

/** 
* 折线图 
*/ 
public static String generateLineChart(HttpSession session, PrintWriter pw,int w, int h){ 
String filename = null; 
CategoryDataset dataset = getDataSet3(); 
JFreeChart chart = ChartFactory.createLineChart( 
"水果产量图", // 图表标题 
"水果", // 目录轴的显示标签 
"产量", // 数值轴的显示标签 
dataset, // 数据集 
PlotOrientation.VERTICAL, // 图表方向:水平、垂直 
true, // 是否显示图例(对于简单的柱状图必须是false) 
false, // 是否生成工具 
false // 是否生成URL链接 
); 

/*----------设置消除字体的锯齿渲染(解决中文问题)--------------*/ 
chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING, 
RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); 

/*------------配置图表属性--------------*/ 
// 1,设置整个图表背景颜色 
chart.setBackgroundPaint(Color.pink); 

/*------------设定Plot参数-------------*/ 
CategoryPlot plot = chart.getCategoryPlot(); 
// 2,设置详细图表的显示细节部分的背景颜色 
//plot.setBackgroundPaint(Color.PINK); 
// 3,设置垂直网格线颜色 
plot.setDomainGridlinePaint(Color.black); 
//4,设置是否显示垂直网格线 
plot.setDomainGridlinesVisible(true); 
//5,设置水平网格线颜色 
plot.setRangeGridlinePaint(Color.blue); 
//6,设置是否显示水平网格线 
plot.setRangeGridlinesVisible(true); 

try { 
/*------得到chart的保存路径----*/ 
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection()); 
filename = ServletUtilities.saveChartAsPNG(chart, w, h, info,session); 
/*------使用printWriter将文件写出----*/ 
ChartUtilities.writeImageMap(pw, filename, info, true); 
pw.flush(); 
} catch (IOException e) { 
// TODO 自动生成 catch 块 
e.printStackTrace(); 
} 
return filename; 
} 

/** 
* 在本地生成图片文件 
*/ 
public static void ganarateFruitChart(){ 
CategoryDataset dataset = getDataSet2(); 
JFreeChart chart = ChartFactory.createBarChart3D( 
"水果产量图", // 图表标题 
"月份", // 目录轴的显示标签 
"产量(公斤)", // 数值轴的显示标签 
dataset, // 数据集 
PlotOrientation.VERTICAL, // 图表方向:水平、垂直 
true, // 是否显示图例(对于简单的柱状图必须是false) 
false, // 是否生成工具 
false // 是否生成URL链接 
); 

FileOutputStream fos_jpg = null; 
try { 
fos_jpg = new FileOutputStream("D:\\fruit.jpg"); 
ChartUtilities.writeChartAsJPEG(fos_jpg,1.0f,chart,400,300,null); 
} catch (FileNotFoundException e) { 
e.printStackTrace(); 
} catch (IOException e) { 
e.printStackTrace(); 
} finally { 
try { 
fos_jpg.close(); 
} catch (Exception e) {} 
} 
} 


/** 
* 获取一个饼状图的简单数据集对象 
* @return 
*/ 
private static PieDataset getDataSet() { 
DefaultPieDataset dataset = new DefaultPieDataset(); 
dataset.setValue("苹果", 100); 
dataset.setValue("梨子", 200); 
dataset.setValue("葡萄", 300); 
dataset.setValue("香蕉", 400); 
dataset.setValue("荔枝", 500); 
return dataset; 
} 


/** 
* 获取一个柱状图数据集对象 
* @return 
*/ 
private static CategoryDataset getDataSet2() { 
DefaultCategoryDataset dataset = new DefaultCategoryDataset(); 
dataset.addValue(100, "北京", "苹果"); 
dataset.addValue(500, "北京", "荔枝"); 
dataset.addValue(400, "北京", "香蕉"); 
dataset.addValue(200, "北京", "梨子"); 
dataset.addValue(300, "北京", "葡萄"); 
dataset.addValue(500, "上海", "葡萄"); 
dataset.addValue(600, "上海", "梨子"); 
dataset.addValue(400, "上海", "香蕉"); 
dataset.addValue(700, "上海", "苹果"); 
dataset.addValue(300, "上海", "荔枝"); 
dataset.addValue(300, "广州", "苹果"); 
dataset.addValue(200, "广州", "梨子"); 
dataset.addValue(500, "广州", "香蕉"); 
dataset.addValue(400, "广州", "葡萄"); 
dataset.addValue(700, "广州", "荔枝"); 
return dataset; 
} 

/** 
* 获取一个折线图数据集对象 
* @return 
*/ 
private static CategoryDataset getDataSet3() { 
DefaultCategoryDataset dataset = new DefaultCategoryDataset(); 
dataset.addValue(100, "北京", "一月"); 
dataset.addValue(200, "北京", "二月"); 
dataset.addValue(100, "北京", "三月"); 
dataset.addValue(400, "北京", "四月"); 
dataset.addValue(300, "北京", "五月"); 
dataset.addValue(500, "北京", "六月"); 
dataset.addValue(90, "北京", "七月"); 
dataset.addValue(700, "北京", "八月"); 
dataset.addValue(800, "北京", "九月"); 
dataset.addValue(1000, "北京", "十月"); 
dataset.addValue(300, "北京", "十一月"); 
dataset.addValue(700, "北京", "十二月"); 
dataset.addValue(1200, "上海", "一月"); 
dataset.addValue(1100, "上海", "二月"); 
dataset.addValue(1000, "上海", "三月"); 
dataset.addValue(900, "上海", "四月"); 
dataset.addValue(800, "上海", "五月"); 
dataset.addValue(700, "上海", "六月"); 
dataset.addValue(600, "上海", "七月"); 
dataset.addValue(500, "上海", "八月"); 
dataset.addValue(400, "上海", "九月"); 
dataset.addValue(300, "上海", "十月"); 
dataset.addValue(200, "上海", "十一月"); 
dataset.addValue(100, "上海", "十二月"); 
dataset.addValue(600, "武汉", "一月"); 
dataset.addValue(500, "武汉", "二月"); 
dataset.addValue(400, "武汉", "三月"); 
dataset.addValue(300, "武汉", "四月"); 
dataset.addValue(200, "武汉", "五月"); 
dataset.addValue(100, "武汉", "六月"); 
dataset.addValue(200, "武汉", "七月"); 
dataset.addValue(300, "武汉", "八月"); 
dataset.addValue(400, "武汉", "九月"); 
dataset.addValue(500, "武汉", "十月"); 
dataset.addValue(600, "武汉", "十一月"); 
dataset.addValue(700, "武汉", "十二月"); 
return dataset; 
} 

/** 
* @param args 
*/ 
public static void main(String[] args) { 
ganarateFruitChart(); 
} 
}

?

?

/*jsp文件*/ 
<%@ page contentType="text/html;charset=GBK"%> 
<%@ page import="java.io.PrintWriter"%> 
<jsp:directive.page import="com.cn.BarChartDemo"/> 
<html> 
<head> 
<title> 
</title> 
<% 
//饼状图 
String fileNamePie=BarChartDemo.generatePieChart(session,new PrintWriter(out),580,250); 
String graphURLPie = request.getContextPath() + "/servlet/DisplayChart?filename=" + fileNamePie; 
//饼状图 
String fileNameBar=BarChartDemo.generateBarChart(session,new PrintWriter(out),580,250); 
String graphURLBar = request.getContextPath() + "/servlet/DisplayChart?filename=" + fileNameBar; 
//折线图 
String fileNameLine=BarChartDemo.generateLineChart(session,new PrintWriter(out),580,250); 
String graphURLLine = request.getContextPath() + "/servlet/DisplayChart?filename=" + fileNameLine; 
%> 
</head> 
<body bgcolor="#ffffff"> 
<table align="center" width="580" border="0" cellspacing="0" cellpadding="0"> 
<tr> 
<td> 
<img src=" <%= graphURLPie %>"width=580 height=250 border=0 > 
</td> 
</tr> 
<tr> 
<td> 
<img src=" <%= graphURLBar %>"width=580 height=250 border=0 > 
</td> 
</tr> 
<tr> 
<td> 
<img src=" <%= graphURLLine %>"width=580 height=250 border=0 > 
</td> 
</tr> 
</table> 
</body> 
</html> 

?

?

/*web.xml文件*/ 
<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
<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> 

<welcome-file-list> 
<welcome-file>index.jsp </welcome-file> 
</welcome-file-list> 
</web-app> 
?