JFreeChart是開放原始碼網站SourceForge.net上的一個JAVA項目,它主要用來產生各種各樣的圖表,這些圖表包括:餅圖、柱狀圖(普 通柱狀圖以及堆棧柱狀圖)、線圖、地區圖、分布圖、混合圖、甘特圖以及一些儀錶盤等等。這些不同式樣的圖表基本上可以滿足目前的要求。該公司的主要產品有如下:
1、JFreeReport:報表解決工具
2、JFreeChart:Java圖形解決方案(Application/Applet/Servlet/Jsp)
3、JCommon:JFreeReport和JFreeChart的公用類庫
4、JFreeDesigner:JFreeReport的報表設計工具
JFreeChart所產生的Chart包括三個部分:Title,Plot (圖形的主要顯示地區)和 Legend
進行中中的一個資料分析軟體需要用到JAVA的圖表引擎JFreeChart來作圖,現將其在Eclipse中的配置過程說明如下:
1.下載JFreeChart:http://www.jfree.org/jfreechart/index.html
2.安裝配置:先解壓jfreechart-1.0.9.zip,再將解壓之後的檔案中的\lib下的gnujaxp.jar,jcommon-1.0.12.jar,jfreechart-1.0.9.jar三個jar包添加到project中。在Eclipse中的具體做法為:project菜單——>Properties——>Java Build Path——>Libraries——>Add External Jars,就這樣將上述三個jar檔案逐一添加到當前Project中。
3.基於JFreeChart編程
以下是網上找的一個利用Jfreechart產生柱狀圖的程式段,以測試組態成功。
import java.io.*;import java.awt.Dimension;import javax.swing.JPanel;import org.jfree.chart.*;import org.jfree.chart.axis.CategoryAxis;import org.jfree.chart.axis.CategoryLabelPositions;import org.jfree.chart.plot.CategoryPlot;import org.jfree.chart.plot.PlotOrientation;import org.jfree.chart.renderer.category.BarRenderer3D;import org.jfree.data.category.CategoryDataset;import org.jfree.data.category.DefaultCategoryDataset;import org.jfree.data.general.DatasetUtilities;import org.jfree.ui.ApplicationFrame;import org.jfree.ui.RefineryUtilities;/*** 該類用於示範最簡單的柱狀圖產生*/public class BarChartDemo { public static void main(String[] args) throws IOException{ CategoryDataset dataset = getDataSet2(); JFreeChart chart = ChartFactory.createBarChart3D( "水果產量圖", // 圖表標題 "水果", // 目錄軸的顯示標籤 "產量", // 數值軸的顯示標籤 dataset, // 資料集 PlotOrientation.VERTICAL, // 圖表方向:水平、垂直 true, // 是否顯示圖例(對於簡單的柱狀圖必須是false) false, // 是否產生工具 false // 是否產生URL連結 ); FileOutputStream fos_jpg = null; try { fos_jpg = new FileOutputStream("D:\\fruit.jpg"); ChartUtilities.writeChartAsJPEG(fos_jpg,chart,400,300); } finally { try { fos_jpg.close(); } catch (Exception e) {} } } /** * 擷取一個示範用的簡單資料集對象 * @return */ private static CategoryDataset getDataSet() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, null, "蘋果"); dataset.addValue(200, null, "梨子"); dataset.addValue(300, null, "葡萄"); dataset.addValue(400, null, "香蕉"); dataset.addValue(500, null, "荔枝"); return dataset; } /** * 擷取一個示範用的組合資料集對象 * @return */ private static CategoryDataset getDataSet2() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, "北京", "蘋果"); dataset.addValue(100, "上海", "蘋果"); dataset.addValue(100, "廣州", "蘋果"); dataset.addValue(200, "北京", "梨子"); dataset.addValue(200, "上海", "梨子"); dataset.addValue(200, "廣州", "梨子"); dataset.addValue(300, "北京", "葡萄"); dataset.addValue(300, "上海", "葡萄"); dataset.addValue(300, "廣州", "葡萄"); dataset.addValue(400, "北京", "香蕉"); dataset.addValue(400, "上海", "香蕉"); dataset.addValue(400, "廣州", "香蕉"); dataset.addValue(500, "北京", "荔枝"); dataset.addValue(500, "上海", "荔枝"); dataset.addValue(500, "廣州", "荔枝"); return dataset; }}
.4 產生的圖表
上述程式產生的柱狀圖如下: