JFreeChart学习
来源:互联网 发布:java实现dijkstra 编辑:程序博客网 时间:2024/05/22 09:43
一 BarCharDemo
package net.neitbe.jfreechat;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
/**
* @author neitbe
*/
public class BarCharDemo {
private static Log log = LogFactory.getLog(BarCharDemo.class);
private static String path = "D://fuit.jpeg";
/**
* 获取一个简单的数据集对象
* @return
*/
protected static CategoryDataset getDataSet() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100,"","苹果"); //addValue()方法第二个参数干什么用的?
dataset.addValue(200,"","梨子");
dataset.addValue(300,"","葡萄");
dataset.addValue(400,"","香蕉");
dataset.addValue(500,"","荔枝");
return dataset;
}
protected static CategoryDataset getDataSet2() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "北京", "苹果");
dataset.addValue(130, "上海", "苹果");
dataset.addValue(160, "广州", "苹果");
dataset.addValue(200, "北京", "梨子");
dataset.addValue(230, "上海", "梨子");
dataset.addValue(260, "广州", "梨子");
dataset.addValue(300, "北京", "葡萄");
dataset.addValue(330, "上海", "葡萄");
dataset.addValue(360, "广州", "葡萄");
dataset.addValue(400, "北京", "香蕉");
dataset.addValue(430, "上海", "香蕉");
dataset.addValue(460, "广州", "香蕉");
dataset.addValue(500, "北京", "荔枝");
dataset.addValue(530, "上海", "荔枝");
dataset.addValue(560, "广州", "荔枝");
return dataset;
}
public static void main(String[] args) {
CategoryDataset dataset = getDataSet2();
JFreeChart chart = getChart(dataset);
writePic(chart,path);
}
protected static JFreeChart getChart(CategoryDataset dataset) {
JFreeChart chart = ChartFactory.createBarChart3D(
"水果产量图", //图标标题
"水果", //目录轴显示标签 (x轴)
"产量", //数据轴显示标签 (y轴)
dataset, //数据集
PlotOrientation.VERTICAL, //图标方向:水平,垂直
true, //是否显示图例(简单的柱装图必须是fasle)
false, //是否生成工具
false //是否生成URL链接
);
return chart;
}
protected static void writePic(JFreeChart chart,String path) {
FileOutputStream fos_jpg = null;
try {
fos_jpg = new FileOutputStream(path);
ChartUtilities.writeChartAsJPEG(fos_jpg,100,chart,800,600,null); //几个参数是什么意思?
} catch (FileNotFoundException e) {
log.error("文件没有找到!",e);
} catch (IOException e) {
log.error("IO错误!",e);
}
finally {
try {
fos_jpg.close();
} catch (IOException e) {
log.error("IO异常",e);
}
}
}
}
二 PieChartDemo
package net.neitbe.jfreechat;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
/**
* @author neitbe
*/
public class PieChartDemo extends BarCharDemo {
private static String path = "D://fuit1.jpeg";
protected static JFreeChart getChart(PieDataset dataset) {
JFreeChart chart = ChartFactory.createPieChart3D(
"水果产量图", //图标标题
dataset, //数据集
true, //是否显示图例(简单的柱装图必须是fasle)
false, //是否生成工具
false //是否生成URL链接
);
return chart;
}
public static void main(String[] args) {
PieDataset dataset = getPicDataSet();
JFreeChart chart = getChart(dataset);
writePic(chart,path);
}
private static PieDataset getPicDataSet() {
DefaultPieDataset dataset = new DefaultPieDataset ();
dataset.setValue("苹果",100);
dataset.setValue("梨",200);
dataset.setValue("香蕉",300);
dataset.setValue("芒果",400);
dataset.setValue("葡萄",500);
return dataset;
}
}
三 TimeSeriesDemo(在页面上显示)
首先配置web.xml
<servlet>
<servlet-name>DisplayChart</servlet-name>
<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DisplayChart</servlet-name>
<url-pattern>/servlet/DisplayChart</url-pattern>
</servlet-mapping>
TimeSeriesDemo.java
package net.neitbe.home.jfreechart.business;
import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.io.IOException;
import javax.servlet.http.HttpSession;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.time.Day;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.time.TimeSeriesDataItem;
/**
* @author neitbe
*/
public class TimeSeriesDemo {
private static Log log = LogFactory.getLog(TimeSeriesDemo.class);
//曲线图标题
private String title = "趋势分析";
//曲线图X轴提示
private String domain = "月份走势";
//曲线图Y轴提示
private String range = "应收余额";
//曲线图自标题
private String subtitleStr = "2005财年分析";
//创建时间数据源
//每一个TimeSeries在图上是一条曲线
private TimeSeries yongyou = new TimeSeries("用友");
private TimeSeries jindie = new TimeSeries("金碟");
private TimeSeries dongruan = new TimeSeries("东软");
//时间曲线数据集合
private static TimeSeriesCollection dataset = new TimeSeriesCollection();
private void setDataset() {
dataset.removeAllSeries(); //在javaBean中使用此类这个很重要,不然会不停的加入新的TimeSeries;
dataset.addSeries(this.yongyou);
dataset.addSeries(this.jindie);
dataset.addSeries(this.dongruan);
}
private void setDongruan() {
this.dongruan.clear(); //很重要,不然会报错
/**
* 报错
* org.apache.jasper.JasperException: You are attempting to add an observation for the time period
* 这里是在类属性里声明TimeSeries才用到的
*/
for(int i = 1999; i < 2005; i++) {
for(int mon = 0; mon < 12; mon++) {
this.dongruan.add(new TimeSeriesDataItem(new Day(1,mon+1,i),new Double(300 - Math.random()*100)));
}
}
}
private void setJindie() {
this.jindie.clear(); //很重要,不然会报错
for(int i = 1999; i < 2005; i++) {
for(int mon = 0; mon < 12; mon++) {
this.jindie.add(new TimeSeriesDataItem(new Day(1,mon+1,i),new Double(400 - Math.random()*100)));
}
}
}
private void setYongyou() {
this.yongyou.clear(); //很重要,不然会报错
for(int i = 1999; i < 2005; i++) {
for(int mon = 0; mon < 12; mon++) {
this.yongyou.add(new TimeSeriesDataItem(new Day(1,mon+1,i),new Double(500 - Math.random()*100)));
}
}
}
private TimeSeriesCollection getDataset() {
this.setDongruan();
this.setJindie();
this.setYongyou();
this.setDataset();
return dataset;
}
public String drawPic(HttpSession session) {
String fileName = null;
JFreeChart chart = ChartFactory.createTimeSeriesChart(title,domain,range,getDataset(),true,true,false);
TextTitle subTitle = new TextTitle(subtitleStr,new Font("黑体",Font.BOLD,12));
chart.addSubtitle(subTitle);
chart.setTitle(new TextTitle(title,new Font("隶书",Font.ITALIC,15)));
chart.setBorderPaint(new GradientPaint(0,0,Color.white,0,1000,Color.blue));
//String fileName = "D://fuit2.jpeg";
try {
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
log.debug("准备创建图片……");
fileName = ServletUtilities.saveChartAsJPEG(chart,600,600,info,session);
log.debug("图片创建成功!");
} catch (IOException e) {
log.error("IO异常:",e);
}
log.debug("返回的文件名为:" + fileName);
return fileName;
}
/*public static void main(String[] args) {
TimeSeriesDemo timeSeriesDemo = new TimeSeriesDemo();
timeSeriesDemo.drawPic();
}*/
}
index.jsp页面:
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>Insert title here</title>
<jsp:useBean id="timeSeries" scope="session" class="net.neitbe.home.jfreechart.business.TimeSeriesDemo"/>
</head>
<body>
<%
String fileName = timeSeries.drawPic(request.getSession());
String graphURL = request.getContextPath()+"/servlet/DisplayChart?filename=" + fileName;
%>
<%=graphURL%><br/>
<img src="<%= graphURL %>" width="400" height="400" border="1"/>
</body>
</html>
- 学习jfreechart
- JFreeChart学习
- Jfreechart学习
- JFreeChart 学习
- jfreeChart学习
- jfreechart学习
- Jfreechart学习
- JFreechart学习
- jFreeChart学习2---JFreeChart API中文文档
- Jfreechart 学习笔记
- JFreeChart学习笔记
- JFreeChart学习录
- JfreeChart学习总结
- Jfreechart 学习资料 (一)
- JfreeChart学习总结
- JfreeChart学习总结
- JfreeChart学习总结
- JfreeChart学习总结
- API SelectObject
- API SelectObject
- WMP11 官方简体中文版下载
- java 字符的转化
- “我顶你个肺”是什么意思?
- JFreeChart学习
- 操作image类型数据
- XmlHttp
- j2me如何提高效率
- 基于ASP.NET实现全球化
- TechNet V播“我为IT狂”作品一
- 似曾相识
- pSOS&Win32--系统调用封装-任务管理(1): 创建 删除 取得
- 创建简单的Windows Setup Project -- Visual C# 2005