JFreeChart折线图总结

 前段时间,因为工作需要,花了一天多时间来学习JFreeChart画折线图。因为网上的资料大部分只是一个简单的例子,并没有相对系统的分析,所以在代码的编写时,遇到了不少的困难。现在在其总结一下,作为笔记。
  我的编程环境是eclipse3.20+Orcal10g,使用的框架是struts1.2,写log使用的是log4j。
  首先,我们必须引入开发所使用的包。网上的介绍都说大部分需要3个包。jcommon-1.0.14.jar和jfreechart-1.0.11.jar,还有另外一个包,可是我在操作中发现,引入上述3个包,我的tomcat在启动时总会出错,与现有的程序包有冲突。后来在同事的帮助下,才发现只要上述前两个包就可以了。将这两个包放入tomcat的lib中,并增加这两个包的环境变量。
    修改web.xml,增加相应的servlet。  
    <servlet>
      <servlet-name>DisplayChart</servlet-name>
      <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
    </servlet>
    

<!-- Action Servlet Mapping -->
<servlet-mapping>
   <servlet-name>DisplayChart</servlet-name>
   <url-pattern>/servlet/DisplayChart</url-pattern>
    </servlet-mapping>
  接下来,我们便可以编写程序了。我的需求是在后台处理完数据后,生成时间金额的一个统计图,然后在web页中显示图片。
  JFreeChart可以产生不同类型的统计图,如饼图,折线图,曲线图,柱状图等。它很好的使用了工厂模式,所有这些类型的图都需要相应在工厂ChartFactory中生成出相应的chart对象。而我需要的是下面这个函数
    createTimeSeriesChart(java.lang.String title, java.lang.String timeAxisLabel, java.lang.String valueAxisLabel, XYDataset dataset, boolean legend, boolean tooltips, boolean urls)
  dateset存储了要在图中显示的数据,它是一个数据集合,在折线图中它是所有折线的集合。
  TimeSeriesCollection dataset = new TimeSeriesCollection(); // 建立dataset对象
  dataset.removeAllSeries();// 删除原来的数据
    TimeSeries aLine = new TimeSeries();// 建立一条折线的数据
    TimeSeries bLine = new TimeSeries();
  // 填充每条折线的数据,略。。。。
    dataset.addSeries(aLine);
    dataset.addSeries(bLine);
    至此为止,一个dataset就造好了。
  当然,创建JFreeChart对象还有另外一种方法,使用JFreeChart的构造函数,如
    public JFreeChart(java.lang.String title,
                  java.awt.Font titleFont,
                  Plot plot,
                  boolean createLegend)
  这里需要进行说明的是参数plot,它存储了图形的相关信息,对应于不同类型的图形,它有不同的子类。画折线图可以使用CatigoryPlot类。构造函数如下
  CategoryPlot(CategoryDataset dataset, CategoryAxis domainAxis, ValueAxis rangeAxis, CategoryItemRenderer renderer)
  上面这两种方式并没有太大的差别,工厂产生的对象已经根据图的类型把相应的参数设置好了,得到对象之后还可以对参数进行修正,不过所做的操作的要少一点。而后面的一种建立方式则要更繁琐一些。
  将图形绘制出来,绘制出来的图形存放在session中,通过url进行引用。
  ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
 
   fileName = ServletUtilities.saveChartAsJPEG(chart, width, height, info, session);  //得到图片的URL
  map = ChartUtilities.getImageMap("map", info, new  StandardToolTipTagFragmentGenerator(), 
  new StandardURLTagFragmentGenerator());//得到这个图片上的map值

 在客户端的jsp页面中,需要做的就是引用图片的URL,另外将map值传到前台。
     <% 
  String graphURL = request.getContextPath()+"/servlet/DisplayChart?filename=" + filename;
 %>
 <bean:write name="projectCostDetailForm" property="map" filter="false"/>
<img src="<%= graphURL %>"  border="0" usemap="#map"/>
  上面的filter属性是必不可少的,不然数据就不是写入源source中,而是写入页面了。

这样,整个流程就完成了。
  
  下面对各个包下面的类作一下简短的介绍。
  包:org.jfree.chart 这个包下面的类都基本与图形本身有关
  类:ChartColor 定义了一些图中使用的颜色
    ChartFactory 能够产生各种图形的chart的对象
    ChartFrame 在java程序中显示图片用的。
    ChartMouseEvent 对图片进行鼠标操作的事件
    ChartPanel  显示图片的面板,可以对各种事件作出响应
    ChartRenderingInfo JFreeChart.draw() 方法执行时,存储显示信息
    ChartUtilities  一个方法的集合,将chart转化为图片以及图片中的map的信息。
    JFreeChart 做图类。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值