JFreeChart簡單開發

JFreeChart是一款java圖形類庫,可以生成餅圖、樹狀圖、散點圖等等,並且可以以圖片的形式輸出。需要的jar包 jfreechart-1.0.10.jar gnujaxp.jar jcommon-1.0.13.jar這三個包;

簡單生成一個餅圖,在main方法中顯示:public static void main(String[] args){

DefaultPieDataset dpd = new DefaultPieDataset(); // 建立一個默認的餅圖
dpd.setValue("程序員", 25); // 輸入數據
dpd.setValue("初級工程師", 30);
dpd.setValue("中級工程師", 35);
dpd.setValue("高級工程師", 40);
dpd.setValue("架構師", 50);
//設置字體爲中文
StandardChartTheme standardChartTheme = new StandardChartTheme("CN");
// 設置標題字體
standardChartTheme.setExtraLargeFont(new Font("隸書", Font.BOLD, 20));
// 設置圖例的字體
standardChartTheme.setRegularFont(new Font("宋書", Font.PLAIN, 15));
// 設置軸向的字體
standardChartTheme.setLargeFont(new Font("宋書", Font.PLAIN, 15));
ChartFactory.setChartTheme(standardChartTheme);
// 可以查具體的API文檔,第一個參數是標題,第二個參數是一個數據集,第三個參數表示是否顯示Legend,第四個參數表示是否顯示提示,第五個參數表示圖中是否存在URL
JFreeChart chart = ChartFactory.createPieChart("開發層次結構圖", dpd, true, true, false);
ChartFrame chartFrame = new ChartFrame("開發層次結構圖", chart);
// chart要放在Java容器組件中,ChartFrame繼承自java的Jframe類。該第一個參數的數據是放在窗口左上角的,不是正中間的標題。
chartFrame.pack(); // 以合適的大小展現圖形
chartFrame.setVisible(true);// 圖形是否可見

}

效果圖如下:



簡單生成一個餅圖,在main方法中顯示:public static void main(String[] args){

double[][] data = new double[][] { { 1230, 1110, 1120, 1210 }, { 720, 750, 860, 800 }, { 830, 780, 790, 700, },
{ 400, 380, 390, 450 } };
String[] rowKeys = { "番茄", "辣椒", "茄子", "苦瓜" };
String[] columnKeys = { "甘肅", "西安", "天水", "蘭州" };
CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);
JFreeChart chart = ChartFactory.createBarChart3D("蔬菜銷量統計圖", "蔬菜", "銷量", dataset, PlotOrientation.VERTICAL, true,
true, false);
//中文亂碼設置
TextTitle textTitle = chart.getTitle();   
textTitle.setFont(new Font("宋體",Font.BOLD,20)); 
LegendTitle legend = chart.getLegend();   
legend.setItemFont(new Font("宋體", Font.BOLD, 20));   
CategoryPlot plot = (CategoryPlot)chart.getPlot();   
CategoryAxis domainAxis = plot.getDomainAxis();//(柱狀圖的x軸)   
domainAxis.setTickLabelFont(new Font("宋體",Font.BOLD,20));//設置x軸座標上的字體
domainAxis.setLabelFont(new Font("宋體",Font.BOLD,20));//設置x軸上的標題的字體
ValueAxis valueAxis = plot.getRangeAxis();//(柱狀圖的y軸)   
valueAxis.setTickLabelFont(new Font("宋體",Font.BOLD,20));//設置y軸座標上的字體   
valueAxis.setLabelFont(new Font("宋體",Font.BOLD,20));//設置y軸座標上的標題的字體
CategoryPlot plot2 = chart.getCategoryPlot();
// 設置網格背景顏色
plot2.setBackgroundPaint(Color.white);
// 設置網格豎線顏色
plot2.setDomainGridlinePaint(Color.pink);
// 設置網格橫線顏色
plot2.setRangeGridlinePaint(Color.pink);
// 顯示每個柱的數值,並修改該數值的字體屬性
BarRenderer3D renderer = new BarRenderer3D();
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelsVisible(true);
// 默認的數字顯示在柱子中,通過如下兩句可調整數字的顯示
// 注意:此句很關鍵,若無此句,那數字的顯示會被覆蓋,給人數字沒有顯示出來的問題
renderer.setBasePositiveItemLabelPosition(
new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
renderer.setItemLabelAnchorOffset(10D);
// 設置每個地區所包含的平行柱的之間距離
renderer.setItemMargin(0.4);
plot.setRenderer(renderer);
ChartFrame chartFrame = new ChartFrame("蔬菜銷量統計圖", chart);
// chart要放在Java容器組件中,ChartFrame繼承自java的Jframe類。該第一個參數的數據是放在窗口左上角的,不是正中間的標題。
chartFrame.pack(); // 以合適的大小展現圖形
chartFrame.setVisible(true);// 圖形是否可見

}

效果圖:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章