Java报表之JFreeChart-第4讲
1.TimeSeries,TimeSeriesCollection引入
[java] view plain copy
1. package com.xp.chart.line; 2.
3. import java.awt.Font; 4. import java.io.IOException; 5.
6. import javax.servlet.http.HttpSession; 7.
8. import org.jfree.chart.ChartFactory; 9. import org.jfree.chart.JFreeChart; 10. import org.jfree.chart.axis.DateAxis; 11. import org.jfree.chart.axis.DateTickUnit; 12. import org.jfree.chart.labels.ItemLabelAnchor; 13. import org.jfree.chart.labels.ItemLabelPosition;
14. import org.jfree.chart.labels.StandardXYItemLabelGenerator; 15. import org.jfree.chart.plot.XYPlot;
16. import org.jfree.chart.renderer.xy.XYItemRenderer;
17. import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; 18. import org.jfree.chart.servlet.ServletUtilities; 19. import org.jfree.chart.title.TextTitle; 20. import org.jfree.data.time.Month; 21. import org.jfree.data.time.TimeSeries;
22. import org.jfree.data.time.TimeSeriesCollection; 23. import org.jfree.ui.TextAnchor; 24. 25. /**
26. * 折线图实例
27. * @author xiongpan001 28. */
29. public class LineChart1 {
30. public static String getLineChart(HttpSession session) throws Exception
{
31. //创建一个时间序列并且设置报表标题为2016年网站访问量统计
32. TimeSeries timeSeries=new TimeSeries(\年武汉气温变化情况统计图
\, Month.class);
33. //往折线图序列添加数据
34. timeSeries.add(new Month(1,2016),23); 35. timeSeries.add(new Month(2,2016),28); 36. timeSeries.add(new Month(3,2016),29); 37. timeSeries.add(new Month(4,2016),30);
38. timeSeries.add(new Month(5,2016),29); 39. timeSeries.add(new Month(6,2016),30); 40. timeSeries.add(new Month(7,2016),33); 41. timeSeries.add(new Month(8,2016),34); 42. timeSeries.add(new Month(9,2016),23); 43. timeSeries.add(new Month(10,2016),12); 44. timeSeries.add(new Month(11,2016),17); 45. timeSeries.add(new Month(12,2016),23); 46.
47. // 定义时间序列的集合
48. TimeSeriesCollection lineDataset= new TimeSeriesCollection(); 49. lineDataset.addSeries(timeSeries); 50.
51. JFreeChart chart = ChartFactory.createTimeSeriesChart(\气温变化趋势折
线图\,
52. \月份\, \气温\, lineDataset, true, true, true); 53.
54. // 设置主标题
55. chart.setTitle(new TextTitle(\气温变化趋势折线图\, 56. new Font(\楷书\, Font.ITALIC, 16))); 57. // 设置子标题
58. TextTitle subtitle = new TextTitle(\年度\, new Font(\微软雅黑
\, Font.BOLD,
59. 12));
60. chart.addSubtitle(subtitle); 61. chart.setAntiAlias(true); 62.
63. // 设置时间轴的范围。
64. XYPlot plot = (XYPlot) chart.getPlot();
65. DateAxis dateaxis = (DateAxis) plot.getDomainAxis();
66. dateaxis.setDateFormatOverride(new java.text.SimpleDateFormat(\月
\));
67. dateaxis.setTickUnit(new DateTickUnit(DateTickUnit.MONTH, 1)); 68. // 设置曲线是否显示数据点
69. XYLineAndShapeRenderer xylinerenderer = (XYLineAndShapeRenderer) plo
t
70. .getRenderer();
71. xylinerenderer.setBaseShapesVisible(true); 72. // 设置曲线显示各数据点的值
73. XYItemRenderer xyitem = plot.getRenderer(); 74. xyitem.setBaseItemLabelsVisible(true);
75. xyitem.setBasePositiveItemLabelPosition(new ItemLabelPosition( 76. ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));
77. xyitem.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator())
;
78. xyitem.setBaseItemLabelFont(new Font(\, 1, 12)); 79. plot.setRenderer(xyitem);
80. String fileName = ServletUtilities.saveChartAsPNG(chart, 700, 500, 81. session); 82. return fileName; 83. } 84. }
2.创建折线图页面,代码如下
[html] view plain copy
1. <%@page import=\%>
2. <%@ page language=\ contentType=\ 3. pageEncoding=\%>
4.
3.org/TR/html4/loose.dtd\> 5. 6.
7. 8.
12. String fileName=LineChart1.getLineChart(session); 13. System.out.println(fileName); 14. %>
15.
der=\/> 16. 17.
3.显示折线图如下
2.利用JFreeChart创建多重折线图报表
[java] view plain copy
1. package com.xp.chart.line; 2.
3. import java.awt.Font; 4.
5. import javax.servlet.http.HttpSession; 6.
7. import org.jfree.chart.ChartFactory; 8. import org.jfree.chart.JFreeChart; 9. import org.jfree.chart.axis.DateAxis; 10. import org.jfree.chart.axis.DateTickUnit; 11. import org.jfree.chart.labels.ItemLabelAnchor; 12. import org.jfree.chart.labels.ItemLabelPosition;
13. import org.jfree.chart.labels.StandardXYItemLabelGenerator; 14. import org.jfree.chart.plot.XYPlot;
15. import org.jfree.chart.renderer.xy.XYItemRenderer;
16. import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; 17. import org.jfree.chart.servlet.ServletUtilities; 18. import org.jfree.chart.title.TextTitle; 19. import org.jfree.data.time.Month; 20. import org.jfree.data.time.TimeSeries;
21. import org.jfree.data.time.TimeSeriesCollection; 22. import org.jfree.ui.TextAnchor;
23.
24. public class LineChart2 { 25.
26. public static String genLineChart(HttpSession session)throws Exception{
27.
28. // 访问量统计
29. TimeSeries timeSeries=new TimeSeries(\网站访问量统计
\, Month.class); 30. // 添加数据
31. timeSeries.add(new Month(1,2013), 100); 32. timeSeries.add(new Month(2,2013), 200); 33. timeSeries.add(new Month(3,2013), 300); 34. timeSeries.add(new Month(4,2013), 400); 35. timeSeries.add(new Month(5,2013), 560); 36. timeSeries.add(new Month(6,2013), 600); 37. timeSeries.add(new Month(7,2013), 750); 38. timeSeries.add(new Month(8,2013), 890); 39. timeSeries.add(new Month(9,2013), 120); 40. timeSeries.add(new Month(10,2013), 400); 41. timeSeries.add(new Month(11,2013), 1200); 42. timeSeries.add(new Month(12,2013), 1600); 43.
44. // 访问量统计
45. TimeSeries timeSeries2=new TimeSeries(\网站访问量统计
\, Month.class); 46. // 添加数据
47. timeSeries2.add(new Month(1,2013), 50); 48. timeSeries2.add(new Month(2,2013), 100); 49. timeSeries2.add(new Month(3,2013), 150); 50. timeSeries2.add(new Month(4,2013), 200); 51. timeSeries2.add(new Month(5,2013), 220); 52. timeSeries2.add(new Month(6,2013), 300); 53. timeSeries2.add(new Month(7,2013), 340); 54. timeSeries2.add(new Month(8,2013), 400); 55. timeSeries2.add(new Month(9,2013), 450); 56. timeSeries2.add(new Month(10,2013), 500); 57. timeSeries2.add(new Month(11,2013), 70); 58. timeSeries2.add(new Month(12,2013), 800); 59.
60. // 定义时间序列的集合
61. TimeSeriesCollection lineDataset=new TimeSeriesCollection(); 62. lineDataset.addSeries(timeSeries); 63. lineDataset.addSeries(timeSeries2);