使用 JFreeChart来创建基于web的图表[3]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:


      dataset.addValue(500, "上海", "荔枝");
      dataset.addValue(500, "广州", "荔枝");
      return dataset;
   }
}

程序运行结束后生成的图片文件效果如下图所示:

image

图4

如果是使用简单的数据即使用getDataSet方法获取数据集时产生的图片文件如下:
image

图5


2 饼图
对于饼图而言,数据集的获取用的不是同一个数据集类,另外饼图不支持同一个类别的项目中还有子项目这样的数据。我们只给出创建饼图的代码,至于写图表到一个文件则与柱状图一致,无需重复。


package lius.chart.demo;

import java.io.*;

import org.jfree.data.*;
import org.jfree.chart.*;
/**
* 用于演示饼图的生成
* @author Winter Lau
*/
public class PieChartDemo {

   public static void main(String[] args) throws IOException{
      DefaultPieDataset data = getDataSet();
      JFreeChart chart = ChartFactory.createPie3DChart("水果产量图",  // 图表标题
      data,
      true, // 是否显示图例
      false,
      false
      );
      //写图表对象到文件,参照柱状图生成源码
   }
   /**
    * 获取一个演示用的简单数据集对象
    * @return
    */
   private static DefaultPieDataset getDataSet() {
      DefaultPieDataset dataset = new DefaultPieDataset();
      dataset.setValue("苹果",100);
      dataset.setValue("梨子",200);
      dataset.setValue("葡萄",300);
      dataset.setValue("香蕉",400);
      dataset.setValue("荔枝",500);
      return dataset;
   }
}


生成的饼图文件效果如下:
image

图6


四、将生成的图表移到浏览器上
为了将生成的图表直接传给客户端浏览器,只需要将前面两个例子中的文件流换成是通过HttpServletResponse对象获取到的输出流,详细代码清单如下:


package lius.chart.demo;

import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.HttpServlet;

import org.jfree.data.*;
import org.jfree.chart.*;
/**
* 演示通过servlet直接输出图表
* @author Winter Lau
*/
public class ChartDemoServlet extends HttpServlet {

   public void service(ServletRequest req, ServletResponse res)
      throws ServletException, IOException
   {
      res.setContentType("image/jpeg");
      DefaultPieDataset data = getDataSet();
      JFreeChart chart = ChartFactory.createPie3DChart("水果产量图",
      data,
      true,
      false,
      false
      );
            
      ChartUtilities.writeChartAsJPEG(res.getOutputStream(),
         100,chart,400,300,null);
   }
   /**
    * 获取一个演示用的简单数据集对象
    * @return
    */
   private static DefaultPieDataset getDataSet() {
      DefaultPieDataset dataset = new DefaultPieDataset();
      dataset.setValue("苹果",100);
      dataset.setValue("梨子",200);
      dataset.setValue("葡萄",300);
      dataset.setValue("香蕉",400);
      dataset.setValue("荔枝",500);
      return dataset;
   }
}


高级主题
很多情况我们不仅仅要求可以在浏览器上显示一个图表,我们更需要客户可以直接在图表上做一下交互的操作,例如获取信息提示,点击图表某个部分进行更详细信息的展示等等。例如前面生成的简单柱状图,用户需要在看到柱状图后点击某种水果例如是苹果即可看到各个地区苹果产量的情况。为此就要求该图形具有交互操作的功能。在HTML中为了让一个图像具有可交互的功能就必须给该图像定义一个Map对象。下表节选一段具有该功能的HTML代码


<

本文关键:使用 JFreeChart来创建基于web的图表
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top