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的显示页面就可以看效果了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值