《Java报表之JFreeChart》第四讲
来源:互联网 发布:网络上的占豪是谁啊 编辑:程序博客网 时间:2024/05/21 21:39
1.TimeSeries,TimeSeriesCollection 引入
package com.xp.chart.line;import java.awt.Font;import java.io.IOException;import javax.servlet.http.HttpSession;import org.jfree.chart.ChartFactory;import org.jfree.chart.JFreeChart;import org.jfree.chart.axis.DateAxis;import org.jfree.chart.axis.DateTickUnit;import org.jfree.chart.labels.ItemLabelAnchor;import org.jfree.chart.labels.ItemLabelPosition;import org.jfree.chart.labels.StandardXYItemLabelGenerator;import org.jfree.chart.plot.XYPlot;import org.jfree.chart.renderer.xy.XYItemRenderer;import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;import org.jfree.chart.servlet.ServletUtilities;import org.jfree.chart.title.TextTitle;import org.jfree.data.time.Month;import org.jfree.data.time.TimeSeries;import org.jfree.data.time.TimeSeriesCollection;import org.jfree.ui.TextAnchor;/** * 折线图实例 * @author xiongpan001 */public class LineChart1 {public static String getLineChart(HttpSession session) throws Exception {//创建一个时间序列并且设置报表标题为2016年网站访问量统计TimeSeries timeSeries=new TimeSeries("2016年武汉气温变化情况统计图", Month.class);//往折线图序列添加数据timeSeries.add(new Month(1,2016),23);timeSeries.add(new Month(2,2016),28);timeSeries.add(new Month(3,2016),29);timeSeries.add(new Month(4,2016),30);timeSeries.add(new Month(5,2016),29);timeSeries.add(new Month(6,2016),30);timeSeries.add(new Month(7,2016),33);timeSeries.add(new Month(8,2016),34);timeSeries.add(new Month(9,2016),23);timeSeries.add(new Month(10,2016),12);timeSeries.add(new Month(11,2016),17);timeSeries.add(new Month(12,2016),23);// 定义时间序列的集合TimeSeriesCollection lineDataset= new TimeSeriesCollection();lineDataset.addSeries(timeSeries);JFreeChart chart = ChartFactory.createTimeSeriesChart("气温变化趋势折线图","月份", "气温", lineDataset, true, true, true);// 设置主标题chart.setTitle(new TextTitle("气温变化趋势折线图",new Font("楷书", Font.ITALIC, 16)));// 设置子标题TextTitle subtitle = new TextTitle("2016年度", new Font("微软雅黑", Font.BOLD,12));chart.addSubtitle(subtitle);chart.setAntiAlias(true);// 设置时间轴的范围。XYPlot plot = (XYPlot) chart.getPlot();DateAxis dateaxis = (DateAxis) plot.getDomainAxis();dateaxis.setDateFormatOverride(new java.text.SimpleDateFormat("M月"));dateaxis.setTickUnit(new DateTickUnit(DateTickUnit.MONTH, 1));// 设置曲线是否显示数据点XYLineAndShapeRenderer xylinerenderer = (XYLineAndShapeRenderer) plot.getRenderer();xylinerenderer.setBaseShapesVisible(true);// 设置曲线显示各数据点的值XYItemRenderer xyitem = plot.getRenderer();xyitem.setBaseItemLabelsVisible(true);xyitem.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));xyitem.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator());xyitem.setBaseItemLabelFont(new Font("Dialog", 1, 12));plot.setRenderer(xyitem);String fileName = ServletUtilities.saveChartAsPNG(chart, 700, 500,session);return fileName;}}
2.创建折线图页面,代码如下
<%@page import="com.xp.chart.line.LineChart1"%><%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><%String fileName=LineChart1.getLineChart(session);System.out.println(fileName);%><img src="DisplayChart?filename=<%=fileName %>" width="700" height="500" border="0"/></body></html>
3.显示折线图如下
2.利用JFreeChart创建多重折线图报表
package com.xp.chart.line;import java.awt.Font;import javax.servlet.http.HttpSession;import org.jfree.chart.ChartFactory;import org.jfree.chart.JFreeChart;import org.jfree.chart.axis.DateAxis;import org.jfree.chart.axis.DateTickUnit;import org.jfree.chart.labels.ItemLabelAnchor;import org.jfree.chart.labels.ItemLabelPosition;import org.jfree.chart.labels.StandardXYItemLabelGenerator;import org.jfree.chart.plot.XYPlot;import org.jfree.chart.renderer.xy.XYItemRenderer;import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;import org.jfree.chart.servlet.ServletUtilities;import org.jfree.chart.title.TextTitle;import org.jfree.data.time.Month;import org.jfree.data.time.TimeSeries;import org.jfree.data.time.TimeSeriesCollection;import org.jfree.ui.TextAnchor;public class LineChart2 {public static String genLineChart(HttpSession session)throws Exception{// 访问量统计TimeSeries timeSeries=new TimeSeries("A网站访问量统计", Month.class);// 添加数据timeSeries.add(new Month(1,2013), 100);timeSeries.add(new Month(2,2013), 200);timeSeries.add(new Month(3,2013), 300);timeSeries.add(new Month(4,2013), 400);timeSeries.add(new Month(5,2013), 560);timeSeries.add(new Month(6,2013), 600);timeSeries.add(new Month(7,2013), 750);timeSeries.add(new Month(8,2013), 890);timeSeries.add(new Month(9,2013), 120);timeSeries.add(new Month(10,2013), 400);timeSeries.add(new Month(11,2013), 1200);timeSeries.add(new Month(12,2013), 1600);// 访问量统计TimeSeries timeSeries2=new TimeSeries("B网站访问量统计", Month.class);// 添加数据timeSeries2.add(new Month(1,2013), 50);timeSeries2.add(new Month(2,2013), 100);timeSeries2.add(new Month(3,2013), 150);timeSeries2.add(new Month(4,2013), 200);timeSeries2.add(new Month(5,2013), 220);timeSeries2.add(new Month(6,2013), 300);timeSeries2.add(new Month(7,2013), 340);timeSeries2.add(new Month(8,2013), 400);timeSeries2.add(new Month(9,2013), 450);timeSeries2.add(new Month(10,2013), 500);timeSeries2.add(new Month(11,2013), 70);timeSeries2.add(new Month(12,2013), 800);// 定义时间序列的集合TimeSeriesCollection lineDataset=new TimeSeriesCollection();lineDataset.addSeries(timeSeries);lineDataset.addSeries(timeSeries2);JFreeChart chart=ChartFactory.createTimeSeriesChart("访问量统计时间折线图", "月份", "访问量", lineDataset, true, true, true);//设置主标题chart.setTitle(new TextTitle("A,B网站访问量统计对比图", new Font("楷书", Font.BOLD, 15))); //设置子标题TextTitle subtitle = new TextTitle("2013年度", new Font("微软雅黑", Font.BOLD, 12));chart.addSubtitle(subtitle); chart.setAntiAlias(true); //设置时间轴的范围。XYPlot plot = (XYPlot) chart.getPlot(); DateAxis dateaxis = (DateAxis)plot.getDomainAxis();dateaxis.setDateFormatOverride(new java.text.SimpleDateFormat("M月"));dateaxis.setTickUnit(new DateTickUnit(DateTickUnit.MONTH,1)); //设置曲线是否显示数据点XYLineAndShapeRenderer xylinerenderer = (XYLineAndShapeRenderer)plot.getRenderer();xylinerenderer.setBaseShapesVisible(true); //设置曲线显示各数据点的值XYItemRenderer xyitem = plot.getRenderer(); xyitem.setBaseItemLabelsVisible(true);xyitem.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER)); xyitem.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator());xyitem.setBaseItemLabelFont(new Font("Dialog", 1, 12)); plot.setRenderer(xyitem);String fileName=ServletUtilities.saveChartAsPNG(chart, 700, 500, session);return fileName;}}
创建页面代码如下
<%@page import="com.xp.chart.line.LineChart2"%><%@page import="com.xp.chart.line.LineChart1"%><%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><%String fileName=LineChart2.genLineChart(session);System.out.println(fileName);%><img src="DisplayChart?filename=<%=fileName %>" width="700" height="500" border="0"/></body></html>3.显示的双重折线图如图所示
0 0
- 《Java报表之JFreeChart》第四讲
- Java报表之JFreeChart-第一讲
- Java报表之JFreeChart-第二讲
- 《Java报表之JFreeChart》-第三讲
- 《Java报表之JFreeChart》第五讲
- java之报表组件JFreeChart
- java学习笔记之 jfreechart报表,饼形图,用swing画
- JAVA生成报表(JFreeChart)
- java 第四讲
- Java讲座第四讲
- java第四讲
- Java基础第四讲
- Java程序中用JFreeChart制作图形报表
- Java报表制作(iReport+jaserReport+jFreeChart)
- JAVA做报表 -- JFreeChart 实例1
- JAVA做报表 -- JFreeChart 实例2
- Java报表制作(iReport+jaserReport+jFreeChart)
- java jfreechart报表,饼形图,用swing画
- javaScript单体内置对象
- css控制一个div在其父级的div垂直居中显示
- 银联Iso8583报文 POS终端报文结构
- 如何在AndroidStduio中找到R文件
- 剑指offer:数值的整数次方(java)
- 《Java报表之JFreeChart》第四讲
- [图床神器]Windows下的图片上传工具MPic
- Android BroadcastReceiver知识点总结
- hdu-3037-Saving Beans(Lucas定理+大组合数取模)
- Shibboleth简介03——Shibboleth是怎样工作的?(二)
- 优秀程序员必备技能大全
- Tomcat使用总结
- MMU笔记(二)
- Eclipse背景颜色修改