2.1. 簡單柱狀圖
首先為柱狀圖准備數據,柱狀圖必須使用CategoryDataset,這裡我們使用DefaultCategoryDataset。
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100,"Spring Security","Jan");
dataset.addValue(200,"jBPM 4","Jan");
dataset.addValue(300,"Ext JS","Jan");
dataset.addValue(400,"JFreeChart","Jan");
每調用一次addValue()就會向Dataset中添加一條數據,在圖表中看來就是一個柱狀矩形,第一個參數100是柱狀矩形的長度,第二個參數表示數據的名稱,,第三個參數表示數據的分類。
有了圖表數據,下一步使用這些數據創建一個柱狀圖表。
JFreeChart chart = ChartFactory.createBarChart(
"chart",// 標題
"num",// 橫軸名稱
"type",// 縱軸名稱
dataset,// 數據
PlotOrientation.VERTICAL,// 使用垂直柱狀圖
true,// 是否使用legend
false,// 是否使用tooltip
false // 是否使用url鏈接
);
最後使用ChartUtilities將chart導出為PNG圖片。
FileOutputStream fos = null;
try {
fos = new FileOutputStream("target/bar1.png");
ChartUtilities.writeChartAsPNG(fos,chart,400,300);
} finally {
fos.close();
}
圖 2.1. 簡單柱狀圖
完整代碼如下所示:
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100,"Spring Security","Jan");
dataset.addValue(200,"jBPM 4","Jan");
dataset.addValue(300,"Ext JS","Jan");
dataset.addValue(400,"JFreeChart","Jan");
JFreeChart chart = ChartFactory.createBarChart("chart","num",
"type",dataset,PlotOrientation.VERTICAL,true,false,
false);
FileOutputStream fos = null;
try {
fos = new FileOutputStream("target/bar1.png");
ChartUtilities.writeChartAsPNG(fos,chart,400,300);
} finally {
fos.close();
}
2.2. 水平柱狀圖
把PlotOrientation.VERTICAL改成PlotOrientation.HORIZONTAL,柱狀圖就從豎直的變成了水平的。
圖 2.2. 水平柱狀圖
2.3. 三維柱狀圖
使用createBarChart3D就會生成三維柱狀圖。
圖 2.3. 三維柱狀圖
2.4. 分組柱狀圖
DefaultCategoryDataset支持分組統計,我們只需要在addValue()時為數據指定分組類型,顯示柱狀圖時會自動根據類別分組顯示。
dataset.addValue(100,"Spring Security","Jan");
dataset.addValue(200,"jBPM 4","Jan");
dataset.addValue(300,"Ext JS","Jan");
dataset.addValue(100,"JFreeChart","Jan");
dataset.addValue(60,"Spring Security","Fer");
dataset.addValue(100,"jBPM 4","Fer");
dataset.addValue(340,"Ext JS","Fer");
dataset.addValue(130,"JFreeChart","Fer");
圖 2.4. 分組柱狀圖
2.5. 負向坐標
為dataset添加一個負值,就可以在圖標上顯示出負向坐標了。
dataset.addValue(-20,"Ext JS","Jan");
圖 2.5. 負向坐標
TODO
SlidingCategoryDataset
IntervalBar
LayeredBar
survey
設置Label
隱藏axis
中文
背景顏色