JFreeChart 之柱狀圖

JFreeChart 之柱狀圖java

1、JFreeChart 簡介app

  JFreeChart是JAVA平臺上的一個開放的圖表繪製類庫。它徹底使用JAVA語言編寫,是爲applications, applets, servlets 以及JSP等使用所設計。JFreeChart可生成餅圖(pie charts)、柱狀圖(bar charts)、散點圖(scatter plots)、時序圖(time series)、甘特圖(Gantt charts)等等多種圖表,而且能夠產生PNG和JPEG格式的輸出,還能夠與PDF和EXCEL關聯。網站

2、JFreeChart 的使用spa

  官方網站:http://www.jfree.org/.net

  下載地址:https://sourceforge.net/projects/jfreechart/files/1.%20JFreeChart/設計

一、拷貝相關的 Jar (jcommon-1.0.23.jar和jfreechart-1.0.19.jar)到 Java 項目中code

二、柱狀圖示例(LineChart.java對象

 1 package cn.com.zfc.jfreechart;
 2 
 3 import java.awt.Font;
 4 import java.io.File;
 5 import java.io.IOException;
 6 
 7 import org.jfree.chart.ChartFactory;
 8 import org.jfree.chart.ChartFrame;
 9 import org.jfree.chart.ChartUtilities;
10 import org.jfree.chart.JFreeChart;
11 import org.jfree.chart.axis.CategoryAxis3D;
12 import org.jfree.chart.axis.NumberAxis3D;
13 import org.jfree.chart.axis.NumberTickUnit;
14 import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
15 import org.jfree.chart.plot.CategoryPlot;
16 import org.jfree.chart.plot.PlotOrientation;
17 import org.jfree.chart.renderer.category.BarRenderer3D;
18 import org.jfree.data.category.DefaultCategoryDataset;
19 
20 /**
21  * @describe 使用 JFreeChart 技術畫柱狀圖
22  * @author zfc
23  * @date 2017年12月27日 下午4:03:56
24  */
25 public class BarChart3D {
26     public static void main(String[] args) {
27         /* 一、數據集對象 DefaultCategoryDataset */
28         DefaultCategoryDataset dataset = new DefaultCategoryDataset();
29         /* 二、數據集對象 DefaultCategoryDataset 中添加數據 */
30         dataset.addValue(98, "數學", "張三");
31         dataset.addValue(87, "語文", "張三");
32         dataset.addValue(68, "數學", "李四");
33         dataset.addValue(89, "語文", "李四");
34         dataset.addValue(56, "數學", "王五");
35         dataset.addValue(96, "語文", "王五");
36         /* 三、建立圖形對象 JFreeChart:主標題的名稱,圖標顯示的數據集合,是否顯示子標題,是否生成提示的標籤,是否生成URL連接 */
37         JFreeChart chart = ChartFactory.createBarChart3D("成績統計表", "學生姓名", "分數", dataset, PlotOrientation.VERTICAL, true,
38                 true, true);
39         /* 四、處理亂碼 */
40         // 處理主標題的亂碼
41         chart.getTitle().setFont(new Font("宋體", Font.BOLD, 18));
42         // 處理子標題亂碼
43         chart.getLegend().setItemFont(new Font("宋體", Font.BOLD, 15));
44         /* 五、獲取圖表區域對象 CategoryPlot */
45         CategoryPlot categoryPlot = (CategoryPlot) chart.getPlot();
46         // 獲取X軸的對象
47         CategoryAxis3D categoryAxis3D = (CategoryAxis3D) categoryPlot.getDomainAxis();
48         // 獲取Y軸的對象
49         NumberAxis3D numberAxis3D = (NumberAxis3D) categoryPlot.getRangeAxis();
50         // 處理X軸上的亂碼
51         categoryAxis3D.setTickLabelFont(new Font("宋體", Font.BOLD, 15));
52         // 處理X軸外的亂碼
53         categoryAxis3D.setLabelFont(new Font("宋體", Font.BOLD, 15));
54         // 處理Y軸上的亂碼
55         numberAxis3D.setTickLabelFont(new Font("宋體", Font.BOLD, 15));
56         // 處理Y軸外的亂碼
57         numberAxis3D.setLabelFont(new Font("宋體", Font.BOLD, 15));
58         // 處理Y軸上顯示的刻度,以10做爲1格
59         numberAxis3D.setAutoTickUnitSelection(false);
60         NumberTickUnit unit = new NumberTickUnit(10);
61         numberAxis3D.setTickUnit(unit);
62         // 獲取繪圖區域對象
63         BarRenderer3D barRenderer3D = (BarRenderer3D) categoryPlot.getRenderer();
64         // 設置柱形圖的寬度
65         barRenderer3D.setMaximumBarWidth(0.07);
66         // 在圖形上顯示數字
67         barRenderer3D.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
68         barRenderer3D.setBaseItemLabelsVisible(true);
69         barRenderer3D.setBaseItemLabelFont(new Font("宋體", Font.BOLD, 15));
70 
71         /* 八、生成相應的圖片 */
72         File file = new File("I:/BarChart3D.JPEG");
73         try {
74             ChartUtilities.saveChartAsJPEG(file, chart, 800, 600);
75         } catch (IOException e) {
76             e.printStackTrace();
77         }
78 
79         // 使用ChartFrame對象顯示圖像
80         ChartFrame frame = new ChartFrame("zfc", chart);
81         frame.setVisible(true);
82         frame.pack();
83     }
84 }

三、運行結果blog

相關文章
相關標籤/搜索