首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

JFreeChart 施用全过程

2012-11-04 
JFreeChart 应用全过程一、新建一个web项目二、在web.xml中配置servlet??? servlet??????? servlet-name

JFreeChart 应用全过程

一、新建一个web项目

二、在web.xml中配置servlet

??? <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>

三、新建一个ChartDemo类,写一个获得数据集方法

1、饼状图数据集

??? 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;

?? }

2、柱壮图数据集

?? 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;

?? }

3、折线图数据集

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;

?? }

四、写一个主方法用来构造要显示的图形

1、饼状图

?? 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;

?? }

2、柱状图

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;

?? }

3、折线图

public static String generateLineChart(HttpSession session, PrintWriter pw,

int w, int h){

??????? String filename = null;

??????? CategoryDataset dataset = getDataSet2();

??????? 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;

?? }

五、写一个调用JfreeChart的显示页面

???? <%@ page contentType="text/html;charset=GBK"%>

<%@ page import="java.io.PrintWriter"%>

<jsp:directive.page import="com.cn.ChartDemo"/>

<html>

<head>

<title>

</title>

<%

//以下部分为折线图象输出(调用不同的方法生成不同类型的图形)

String fileName=ChartDemo.generateLineChart(session,new PrintWriter(out),580,250);

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

%>

</head>

<body bgcolor="#ffffff">

<table width="580" border="0" cellspacing="0" cellpadding="0">

<tr>

???? <td>

????? <img src="<%= graphURL %>"width=580 height=250 border=0 >

???? </td>

???? </tr>

</table>

</body>

</html>

六、将项目发布到web服务器,启动web服务器。打开JfreeChart的显示页面就可以看效果了。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/TechChan/archive/2009/02/04/3862100.aspx

热点排行