JFreeChart綜述:
在進行源代碼講解之前,有必要將本人所領悟到的一些關於jfreechart的概念講述下,jfreechart工具基本上把一個圖形分成了幾個邏輯部分。
1.首先是整個的畫布對象(chart),畫布就相當與一個大的容器,包含一些圖形元素,比如爲一張白紙
2.然後是畫圖區域對象(plot),就是實際圖形所佔據的區域,比如爲白紙上的一個長方形
3.然後是圖形所需要兩條軸對象(axis),比如爲白紙上的兩條軸線
4.最後是如何進行圖像的繪製對象(render),比如爲一隻畫圖的筆
5.除開上面的這些對象,還有一個最主要的就是通過必須的數據集(dataset)來生成圖形了
pie charts (2D and 3D) :餅圖(平面和立體)
bar charts (regular and stacked, with an optional 3D effect) :柱狀圖
line and area charts :曲線圖
scatter plots and bubble charts
time series, high/low/open/close charts and candle stick charts :時序圖
combination charts :複合圖
Pareto charts
Gantt charts :甘特圖
wind plots, meter charts and symbol charts
wafer map charts
( 態圖表,餅圖(二維和三維) , 柱狀圖 ( 水平,垂直),線圖,點圖,時間變化圖,甘特圖, 股票行情圖,混和圖, 溫度計圖, 刻度圖等常用商用圖表)
圖形可以導出成PNG和JPEG格式,同時還可以與PDF和EXCEL關聯
JFreeChart 核心類庫介紹:
研究jfreechart源碼發現源碼的主要由兩個大的包組成:org.jfree.chart,org.jfree.data。其中前者主要與圖形
本身有關,後者與圖形顯示的數據有關。具體研究如果大家有興趣的話可以自己研究 。
核心類主要有:
org.jfree.chart.JFreeChart :圖表對象,任何類型的圖表的最終表現形式都是在該對象進行一些屬性的定製。JFreeChart引擎本身提供了一個工廠類用於創建不同類型的圖表對象
org.jfree.data.category.XXXDataSet: 數據集對象,用於提供顯示圖表所用的數據。根據不同類型的圖表對應着很多類型的數據集對象類
org.jfree.chart.plot.XXXPlot :圖表區域對象,基本上這個對象決定着什麼樣式的圖表,創建該對象的時候需要Axis、Renderer以及數據集對象的支持
org.jfree.chart.axis.XXXAxis :用於處理圖表的兩個軸:縱軸和橫軸
org.jfree.chart.render.XXXRender :負責如何顯示一個圖表對象
org.jfree.chart.urls.XXXURLGenerator: 用於生成Web圖表中每個項目的鼠標點擊鏈接
XXXXXToolTipGenerator: 用於生成圖象的幫助提示,不同類型圖表對應不同類型的工具提示類
JFreeChart,圖表對象,任何類型的圖表的最終表現形式都是在該對象進行一些屬性的定製。
JFreeChart引擎本身提供了一個工廠類(ChartFactory)用於創建不同類型的圖表對象.
例如:public abstract class ChartFactory {}
JFreeChart chart = ChartFactory.createBarChart3D(N個參數);
chart.setXXX()....
org.jfree.chart.tooltips.CategoryToolTipGenerator#generateToolTip(CategoryDataset, int, int)
這個接口中的這個方法使鼠標放到曲線上就顯示相應數據。
de.laures.cewolf.util.Renderer
private static synchronized void handleJPEG(
ByteArrayOutputStream baos,
JFreeChart chart,
int width,
int height,
ChartRenderingInfo info)
throws IOException {
ChartUtilities.writeChartAsJPEG(baos, chart, width, height, info);
}
DateAxis 時間軸(X軸)
NumberAxis 數值軸(Y軸)