?? charthandle.java
字號:
package stat;
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;
/**
* 專門用來生成圖形
*
*/
public class ChartHandle {
/**
* 根據傳入的參數,生成餅圖,并保存到文件中,返回文件名
* @param title String 圖形標題
* @param session HttpSession
* @param data CategoryDataset 數據集
* @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);
//創建Plot圖表區域對象,這里是餅圖
JFreeChart chart = new JFreeChart(title, //圖形標題
JFreeChart.DEFAULT_TITLE_FONT, //標題字體
plot, //圖標標題對象
true //是否顯示圖例
);
//使用plot對象創建JFreeChart
chart.setBackgroundPaint(java.awt.Color.white);
//設置圖形的背景色
ChartRenderingInfo info = new ChartRenderingInfo(new
StandardEntityCollection());
filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info,
session);
//把生成的圖片放到臨時目錄
//500是圖片長度,300是圖片高度
pw.flush();
}
catch (Exception e) {
e.printStackTrace();
}
return filename;
}
/**
* 根據傳入的參數,生成柱狀圖,并保存到文件中,返回文件名
* @param title String 圖形標題
* @param session HttpSession
* @param data CategoryDataset 數據集
* @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, // 圖表標題
"時間", // 目錄軸的顯示標簽
"訪問量", // 數值軸的顯示標簽
data, // 數據集
PlotOrientation.VERTICAL, // 圖表方向:水平、垂直
true, // 是否顯示圖例(對于簡單的柱狀圖必須是false)
false, // 是否生成工具
false // 是否生成URL鏈接
);
//使用ChartFactory創建柱狀JFreeChart
ChartRenderingInfo info = new ChartRenderingInfo(new
StandardEntityCollection());
filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info,
session);
//把生成的圖片放到臨時目錄
//500是圖片長度,300是圖片高度
pw.flush();
}
catch (Exception e) {
e.printStackTrace();
}
return filename;
}
/**
* 根據傳入的參數,生成折線圖,并保存到文件中,返回文件名
* @param title String 圖形標題
* @param session HttpSession
* @param data XYDataset 數據集
* @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, //圖形的標題
"日期", //X軸說明
"訪問量", //Y軸說明
data, //數據
true, //是否創建圖例
true, //是否生成tooltips
false //是否生成URL鏈接
);
//使用ChartFactory來創建時間序列的圖表對象
chart.setBackgroundPaint(Color.white);
//設置圖表的背景色
XYPlot xyplot = (XYPlot) chart.getPlot();
//獲得圖表區域對象
xyplot.setBackgroundPaint(Color.white);
//設置背景色
xyplot.setDomainGridlinePaint(Color.lightGray);
//設置橫坐標網格線的顏色
xyplot.setRangeGridlinePaint(Color.lightGray);
//設置縱坐標網格線的顏色
xyplot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D));
//設置文字與坐標軸之間的偏移量
xyplot.setDomainCrosshairVisible(true);
//設置橫坐標交叉線是否顯示
xyplot.setRangeCrosshairVisible(true);
//設置縱坐標交叉線是否顯示
org.jfree.chart.renderer.xy.XYItemRenderer xyitemrenderer = xyplot.
getRenderer();
//獲得數據點(X,Y)的render,負責描繪數據點
if (xyitemrenderer instanceof XYLineAndShapeRenderer) {
XYLineAndShapeRenderer xylineandshaperenderer = (
XYLineAndShapeRenderer) xyitemrenderer;
xylineandshaperenderer.setShapesVisible(true);
//數據點可見
xylineandshaperenderer.setShapesFilled(true);
//數據點是實心點
xylineandshaperenderer.setSeriesFillPaint(0, Color.red);
//數據點填充為紅色
xylineandshaperenderer.setUseFillPaint(true);
//將設置好的屬性應用到render上
}
DateAxis dateaxis = (DateAxis) xyplot.getDomainAxis();
//對domain 軸上日期顯示格式定義
dateaxis.setDateFormatOverride(new SimpleDateFormat("yy-MM-dd"));
//設置日期格式
ChartRenderingInfo info = new ChartRenderingInfo(new
StandardEntityCollection());
filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info,
session);
//把生成的圖片放到臨時目錄, 500是圖片長度,300是圖片高度,并返回臨時文件名
pw.flush();
}
catch (Exception e) {
e.printStackTrace();
}
return filename;
}
private static JFreeChart createChart(XYDataset xydataset) {
JFreeChart chart = ChartFactory.createTimeSeriesChart(
"日流量統計",
"日期",
"訪問量",
xydataset,
true,
true,
false);
chart.setBackgroundPaint(Color.white);
XYPlot xyplot = (XYPlot) chart.getPlot(); //獲得 plot : XYPlot!!
xyplot.setBackgroundPaint(Color.white);
xyplot.setDomainGridlinePaint(Color.lightGray);
xyplot.setRangeGridlinePaint(Color.lightGray);
xyplot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D));
xyplot.setDomainCrosshairVisible(true);
xyplot.setRangeCrosshairVisible(true);
org.jfree.chart.renderer.xy.XYItemRenderer xyitemrenderer = xyplot.
getRenderer();
if (xyitemrenderer instanceof XYLineAndShapeRenderer) {
XYLineAndShapeRenderer xylineandshaperenderer = (
XYLineAndShapeRenderer) xyitemrenderer;
xylineandshaperenderer.setShapesVisible(true); //數據點可見
xylineandshaperenderer.setShapesFilled(true); //數據點是實心點
xylineandshaperenderer.setSeriesFillPaint(0, Color.red); //數據點填充為紅色
xylineandshaperenderer.setUseFillPaint(true); //應用
}
DateAxis dateaxis = (DateAxis) xyplot.getDomainAxis(); //對domain 軸上日期顯示格式定義
dateaxis.setDateFormatOverride(new SimpleDateFormat("yy-MM-dd"));
return chart;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -