折线图jfreechart:JFreeChart折线图总结

折线图jfreechart:JFreeChart折线图总结
2008-12-16 18:10
我的编程环境是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 filename = (String) request.getAttribute("fileName");
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的信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于 java 折线图 jfreechart,你可以参考以下步骤: 1. 首先需要下载 jfreechart 库并导入到项目中。 2. 创建一个数据集对象 DefaultCategoryDataset,用于存储数据。 3. 向数据集中添加数据,使用 addValue() 方法。 4. 创建一个 JFreeChart 对象,用于生成图表。 5. 使用 ChartFactory.createLineChart() 方法创建折线图。 6. 将数据集对象和图表对象传入 createLineChart() 方法中。 7. 将生成的图表对象添加到一个 ChartPanel 中,并将 ChartPanel 添加到 JFrame 中。 以下是一个简单的示例代码: ``` import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.data.category.DefaultCategoryDataset; import javax.swing.*; public class LineChartExample extends JFrame { public LineChartExample() { // 创建数据集对象 DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(1.0, "Series 1", "Category 1"); dataset.addValue(2.0, "Series 1", "Category 2"); dataset.addValue(3.0, "Series 1", "Category 3"); dataset.addValue(4.0, "Series 1", "Category 4"); dataset.addValue(5.0, "Series 1", "Category 5"); // 创建折线图对象 JFreeChart chart = ChartFactory.createLineChart( "Line Chart Example", "Category", "Value", dataset ); // 将图表对象添加到 ChartPanel 中 ChartPanel chartPanel = new ChartPanel(chart); // 将 ChartPanel 添加到 JFrame 中 setContentPane(chartPanel); } public static void main(String[] args) { LineChartExample example = new LineChartExample(); example.setSize(800, 600); example.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); example.setVisible(true); } } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值