使用JFreeChart增强JSP报表
来源:优易学  2011-12-21 16:41:46   【优易学:中国教育考试门户网】   资料下载   IT书店

 

  四.曲线图

  接着我们来介绍曲线图的使用。在笔者日常的开发工作中,曲线图用得最多,它可以用来绘制趋势图、统计分析等。首先我们在WebRoot下建立一个line目录,用来存放曲线图实例的jsp页面。我们在该目录下建立sample1.jsp页面来做一个简单的曲线图的例子。在开始编码前,让我们来看看与画曲线图密切相关的几个类:

  1) TimeSeriesCollection

  曲线数据的集合。

  2) TimeSeries

  曲线信息序列。

  3) ChartFactory

  可以利用该类的createTimeSeriesChart方法来创建曲线的JFreeChart对象。

  在下例中,我们显示阿蜜果的blog在2007年度各月份的访问量情况,修改后的sample1.jsp的内容如下:

  <%@ page contentType="text/html;charset=GBK"%>

  <%@ page import = "org.jfree.chart.ChartFactory,

  org.jfree.chart.JFreeChart,

  org.jfree.chart.servlet.ServletUtilities,

  org.jfree.chart.title.TextTitle,

  org.jfree.data.time.TimeSeries,

  org.jfree.data.time.Month,

  org.jfree.data.time.TimeSeriesCollection,

  java.awt.Font"%>

  <%

  //访问量统计时间线

  TimeSeries timeSeries = new TimeSeries("阿蜜果blog访问量统计", Month.class);

  //时间曲线数据集合

  TimeSeriesCollection lineDataset = new TimeSeriesCollection();

  //构造数据集合

  timeSeries.add(new Month(1, 2007), 11200);

  timeSeries.add(new Month(2, 2007), 9000);

  timeSeries.add(new Month(3, 2007), 6200);

  timeSeries.add(new Month(4, 2007), 8200);

  timeSeries.add(new Month(5, 2007), 8200);

  timeSeries.add(new Month(6, 2007), 12200);

  timeSeries.add(new Month(7, 2007), 13200);

  timeSeries.add(new Month(8, 2007), 8300);

  timeSeries.add(new Month(9, 2007), 12400);

  timeSeries.add(new Month(10, 2007), 12500);

  timeSeries.add(new Month(11, 2007), 13600);

  timeSeries.add(new Month(12, 2007), 12500);

  lineDataset.addSeries(timeSeries);

  JFreeChart chart = ChartFactory.createTimeSeriesChart("访问量统计时间线", "月份", "访问量", lineDataset, true, true, true);

  //设置子标题

  TextTitle subtitle = new TextTitle("2007年度", new Font("黑体", Font.BOLD, 12));

  chart.addSubtitle(subtitle);

  //设置主标题

  chart.setTitle(new TextTitle("阿蜜果blog访问量统计", new Font("隶书", Font.ITALIC, 15)));

  chart.setAntiAlias(true);

  String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);

  String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;

  %>

  <img src="<%= graphURL %>"width=500 height=300 border=0 usemap="#<%= filename %>">

  有时我们需要显示各数据点及其数值,这是我们需要对上例进行一点改动,在JFreeChart chart = ChartFactory.createTimeSeriesChart……后,TextTitle subtitle = new TextTitle……前加上如下的代码:

  XYPlot plot = (XYPlot) chart.getPlot();

  XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)plot.getRenderer();

  //设置网格背景颜色

  plot.setBackgroundPaint(Color.white);

  //设置网格竖线颜色

  plot.setDomainGridlinePaint(Color.pink);

  //设置网格横线颜色

  plot.setRangeGridlinePaint(Color.pink);

  //设置曲线图与xy轴的距离

  plot.setAxisOffset(new RectangleInsets(0D, 0D, 0D, 10D));

  //设置曲线是否显示数据点

  xylineandshaperenderer.setBaseShapesVisible(true);

  //设置曲线显示各数据点的值

  XYItemRenderer xyitem = plot.getRenderer();

  xyitem.setBaseItemLabelsVisible(true);

上一页  [1] [2] [3] [4] [5] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训