?? jchartfactory.java
字號(hào):
package statistic;
import java.awt.Insets;
import java.awt.Font;
import java.io.PrintWriter;
import javax.servlet.http.HttpSession;
import org.jfree.chart.*;
import org.jfree.chart.plot.*;
import org.jfree.chart.entity.*;
import org.jfree.chart.urls.*;
import org.jfree.chart.servlet.*;
import org.jfree.chart.labels.StandardPieToolTipGenerator;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.chart.title.TextTitle;
import org.jfree.ui.RectangleInsets;
import org.jfree.data.general.Dataset;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.xy.XYDataset;
import java.awt.Color;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.axis.DateAxis;
import java.text.SimpleDateFormat;
/**
* 專門用來生成 JFreeChart 圖形的工廠類,提供各種靜態(tài)方法
*
*/
public class JChartFactory {
/**
* 根據(jù)傳入的參數(shù),生成餅圖,并保存到文件中,返回文件名
* @param title String 圖形標(biāo)題
* @param session HttpSession
* @param data CategoryDataset 數(shù)據(jù)集
* @param pw PrintWriter 輸出流
* @return String 返回圖形的文件名
*/
public static String generatePieChart(String title, HttpSession session,
DefaultPieDataset data,
PrintWriter pw) {
String filename = null;
try {
PiePlot plot = new PiePlot(data);
//創(chuàng)建Plot圖表區(qū)域?qū)ο?這里是餅圖
//JFreeChart chart = ChartFactory.createPieChart(
JFreeChart chart = new JFreeChart(title, //圖形標(biāo)題
JFreeChart.DEFAULT_TITLE_FONT, //標(biāo)題字體
plot, //圖標(biāo)標(biāo)題對(duì)象
true //是否顯示圖例
);
//使用plot對(duì)象創(chuàng)建JFreeChart
chart.setBackgroundPaint(java.awt.Color.white);
//設(shè)置圖形的背景色
ChartRenderingInfo info = new ChartRenderingInfo(new
StandardEntityCollection());
filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info,
session);
//把生成的圖片放到臨時(shí)目錄
//500是圖片長(zhǎng)度,300是圖片高度
pw.flush();
}
catch (Exception e) {
e.printStackTrace();
}
return filename;
}
/**
* 根據(jù)傳入的參數(shù),生成柱狀圖,并保存到文件中,返回文件名
* @param title String 圖形標(biāo)題
* @param session HttpSession
* @param data CategoryDataset 數(shù)據(jù)集
* @param pw PrintWriter 輸出流
* @return String 返回圖形的文件名
*/
public static String generateBarChart(String title, HttpSession session,
CategoryDataset data,
PrintWriter pw) {
String filename = null;
try {
JFreeChart chart = ChartFactory.createBarChart3D(
title, // 圖表標(biāo)題
"頁(yè)面", // 目錄軸的顯示標(biāo)簽
"訪問量", // 數(shù)值軸的顯示標(biāo)簽
data, // 數(shù)據(jù)集
PlotOrientation.VERTICAL, // 圖表方向:水平、垂直
true, // 是否顯示圖例(對(duì)于簡(jiǎn)單的柱狀圖必須是false)
false, // 是否生成工具
false // 是否生成URL鏈接
);
//使用ChartFactory創(chuàng)建柱狀JFreeChart
ChartRenderingInfo info = new ChartRenderingInfo(new
StandardEntityCollection());
filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info,
session);
//把生成的圖片放到臨時(shí)目錄
//500是圖片長(zhǎng)度,300是圖片高度
pw.flush();
}
catch (Exception e) {
e.printStackTrace();
}
return filename;
}
/**
* 根據(jù)傳入的參數(shù),生成折線圖,并保存到文件中,返回文件名
* @param title String 圖形標(biāo)題
* @param session HttpSession
* @param data XYDataset 數(shù)據(jù)集
* @param pw PrintWriter 輸出流
* @return String 返回圖形的文件名
*/
public static String generateZigzagChart( String title,HttpSession session, XYDataset data,
PrintWriter pw) {
String filename = null; //保存圖形的文件名
try {
JFreeChart chart = ChartFactory.createTimeSeriesChart(
title, //圖形的標(biāo)題
"日期", //X軸說明
"訪問量", //Y軸說明
data, //數(shù)據(jù)
true, //是否創(chuàng)建圖例
true, //是否生成tooltips
false //是否生成URL鏈接
);
//使用ChartFactory來創(chuàng)建時(shí)間序列的圖表對(duì)象
chart.setBackgroundPaint(Color.white);//設(shè)置圖表的背景色
XYPlot xyplot = (XYPlot) chart.getPlot(); //獲得圖表區(qū)域?qū)ο? xyplot.setBackgroundPaint(Color.white); //設(shè)置背景色
xyplot.setDomainGridlinePaint(Color.lightGray); //設(shè)置橫坐標(biāo)網(wǎng)格線的顏色
xyplot.setRangeGridlinePaint(Color.lightGray); //設(shè)置縱坐標(biāo)網(wǎng)格線的顏色
xyplot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D)); //設(shè)置文字與坐標(biāo)軸之間的偏移量
xyplot.setDomainCrosshairVisible(true); //設(shè)置橫坐標(biāo)交叉線是否顯示
xyplot.setRangeCrosshairVisible(true); //設(shè)置縱坐標(biāo)交叉線是否顯示
org.jfree.chart.renderer.xy.XYItemRenderer xyitemrenderer = xyplot.getRenderer();
//獲得數(shù)據(jù)點(diǎn)(X,Y)的render,負(fù)責(zé)描繪數(shù)據(jù)點(diǎn)
if (xyitemrenderer instanceof XYLineAndShapeRenderer) {
XYLineAndShapeRenderer xylineandshaperenderer = (
XYLineAndShapeRenderer) xyitemrenderer;
xylineandshaperenderer.setShapesVisible(true); //數(shù)據(jù)點(diǎn)可見
xylineandshaperenderer.setShapesFilled(true); //數(shù)據(jù)點(diǎn)是實(shí)心點(diǎn)
xylineandshaperenderer.setSeriesFillPaint(0, Color.red); //數(shù)據(jù)點(diǎn)填充為紅色
xylineandshaperenderer.setUseFillPaint(true); //將設(shè)置好的屬性應(yīng)用到render上
}
DateAxis dateaxis = (DateAxis) xyplot.getDomainAxis(); //對(duì)domain 軸上日期顯示格式定義
dateaxis.setDateFormatOverride(new SimpleDateFormat("yy-MM-dd")); //設(shè)置日期格式
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info, session);
//把生成的圖片放到臨時(shí)目錄, 500是圖片長(zhǎng)度,300是圖片高度,并返回臨時(shí)文件名
pw.flush();
}
catch (Exception e) {
e.printStackTrace();
}
return filename;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -