jackyrong

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

JAVA中的图表方面,Jfreechart是十分不错的老大了,网上有个具体的英文手册类库下载可以参考的,下面以一个
投票的例子来个火速应用,简单介绍一下

首先,可以将投票结果以servlet的形式输出给页面。第一步要接受参数(如要显示的图形类型,是柱状图,饼形图还是其他什么样的图),
然后传入数据集,然后设置输出的类型,最后输出图形

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;

ublic class ChartServlet extends HttpServlet
{


 public void doPost( HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException
 {
  
//这里先得到一个vote的对象实例
   Vote vote=getvote();

  
  // 得到JFreeChart对象的实例
  JFreeChart chart = getChart( vote );

  // 设置输出对象的类型
  response.setContentType( "image/jpeg" );

  // 输出图形
  ChartUtilities.writeChartAsJPEG( response.getOutputStream(),
   100, chart, 400, 300, null);
 }
 
 
 public void doGet( HttpServletRequest request, HttpServletResponse response )
   throws ServletException, IOException
 {
  doPost( request, response );
 }

// 得到JFreeChart对象的实例
 public static JFreeChart getChart( Vote vote )
 {
  JFreeChart chart = null;

  // 判断是否为饼图
  if( .... )
  {
   // 组织生成饼图的数据
   DefaultPieDataset data = new DefaultPieDataset();
   
   Iterator it = vote.getVoteitems().iterator();

//遍历数据集
   while( it.hasNext() )
   {
    VoteItem vi = (VoteItem)it.next();
//设置要显示图形每一项的标题,具体数字(这里是投票数vi.getvotenum了)
    data.setValue( vi.getTitle(), vi.getVotenum() );
   }
   
   // 判断是否为普通饼图
   if( ..... )
   {
    chart = ChartFactory.createPieChart( vote.getTitle(),
      data, false, false, false );
   }
   else // 3D饼图
   {
    chart = ChartFactory.createPieChart3D( vote.getTitle(),
      data, false, false, false );
   }
  }
  else
  {
   // 组织柱状图的数据
   DefaultCategoryDataset data = new DefaultCategoryDataset();
   
   Iterator it = vote.getVoteitems().iterator();
   while( it.hasNext() )
   {
    VoteItem vi = (VoteItem)it.next();
    data.addValue( vi.getVotenum(), "选项", vi.getTitle() );
   }

   // 判断是否为普通柱状图
   if( .... )
   {
    chart = ChartFactory.createBarChart( vote.getTitle(),
     "选项", "数量", data, PlotOrientation.VERTICAL,
     false, false, false );
   }
   else // 3D柱状图
   {
    chart = ChartFactory.createBarChart3D( vote.getTitle(),
      "选项", "数量", data, PlotOrientation.VERTICAL,
      false, false, false );
   }
  }
  return chart;
 }
}

posted on 2006-08-08 21:02  jackyrong的世界  阅读(2157)  评论(1编辑  收藏  举报