JFreeChart使用方法與例子

轉自:http://blog.csdn.net/crazy1235/article/details/8535999

 

介紹

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

         獲取

    JFreeChart 是JFreeChart公司在開源網站SourceForge.net上的一個項目,該公司的主要產品有如下: 
    1.JFreeReport :報表解決工具 
    2.JFreeChart:Java 圖形解決方案(Application/Applet/Servlet/Jsp) 
    3.JCommon :JFreeReport和JFreeChart的公共類庫 
    4.JFreeDesigner :JFreeReport的報表設計工具 
    我們可以從jfree官方網站上獲取最新版本和相關資料(但是jfree的document需要40美金才能獲取),  

    官方網站:http://www.jfree.org/index.html

           功能介紹:

    JFreeChart 目前是最好的java圖形解決方案,基本能夠解決目前的圖形方面的需求,主要包括如下幾個方面: 
     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 ( 態圖表,餅圖(二維和三維) , 柱狀圖 ( 水平,垂直),線圖,點圖,時間變化圖,甘特圖, 股票行情圖,混和圖, 溫度計圖, 刻度圖等常用商用圖表) 

     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: 用於生成圖象的幫助提示,不同類型圖表對應不同類型的工具提示類 

     配置安裝:

     如圖所示:從官網下載下來工具包之後,解壓之後的結構如圖所示。

      lib文件夾中是所需的jar包。source文件夾中是源碼,需要看的話,可以添加到eclipse中查看。

      新建一個項目,將jfreechart-1.0.1.jar, jcommon-1.0.0.jar, gunjaxp.jar 這三個包添加到你的項目中就OK了。

     代碼編寫

      用JFreeChart生成的各種圖表,可以直接保存成爲本地的一個圖片(.jpeg .png等格式),也可以直接顯示到圖形用戶界面, 還可以顯示在jsp網頁上。下面我只介紹前兩種方法!

      大體上分爲一下幾個步驟:

      (1)建立Dataset。將你所想要顯示的數據都放到這個庫中。

      (2)建立JFreeChart對象。將你的dataset填入到這個對象中。

      (3)設置各種JFreeChart的屬性和效果。通過它提供的各種方法和接口設置相關的屬性。

      (4)生成圖表,然後按照個人的需求進行執行。

      個人感覺這幾個步驟類似於C#中的數據綁定,不知網友們如何看呢?!

      先以柱狀圖爲例,下面看代碼:

  1. package chart.demo02;  
  2.   
  3. import java.awt.Font;  
  4. import java.awt.RenderingHints;  
  5. import java.io.FileOutputStream;  
  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.CategoryAxis;  
  12. import org.jfree.chart.axis.ValueAxis;  
  13. import org.jfree.chart.plot.CategoryPlot;  
  14. import org.jfree.chart.plot.PlotOrientation;  
  15. import org.jfree.chart.title.TextTitle;  
  16. import org.jfree.data.category.CategoryDataset;  
  17. import org.jfree.data.category.DefaultCategoryDataset;  
  18.   
  19. public class BarChartDemo {  
  20.     public static void main(String[] args) {  
  21.         // 1. 得到數據  
  22.         CategoryDataset dataset = getDataSet();  
  23.         // 2. 構造chart  
  24.         JFreeChart chart = ChartFactory.createBarChart3D(  
  25.                 "水果產量圖"// 圖表標題  
  26.                 "水果"// 目錄軸的顯示標籤--橫軸  
  27.                 "產量"// 數值軸的顯示標籤--縱軸  
  28.                 dataset, // 數據集  
  29.                 PlotOrientation.VERTICAL, // 圖表方向:水平、  
  30.                 true// 是否顯示圖例(對於簡單的柱狀圖必須  
  31.                 false// 是否生成工具  
  32.                 false // 是否生成URL鏈接  
  33.                 );  
  34.         // 3. 處理chart中文顯示問題  
  35.         processChart(chart);  
  36.   
  37.         // 4. chart輸出圖片  
  38.         writeChartAsImage(chart);  
  39.   
  40.         // 5. chart 以swing形式輸出  
  41.         ChartFrame pieFrame = new ChartFrame("XXX", chart);  
  42.         pieFrame.pack();  
  43.         pieFrame.setVisible(true);  
  44.   
  45.     }  
  46.   
  47.       
  48.     private static CategoryDataset getDataSet() {  
  49.         DefaultCategoryDataset dataset = new DefaultCategoryDataset();  
  50.         dataset.addValue(100"北京""蘋果");  
  51.         dataset.addValue(120"上海""蘋果");  
  52.         dataset.addValue(160"廣州""蘋果");  
  53.         dataset.addValue(210"北京""梨子");  
  54.         dataset.addValue(220"上海""梨子");  
  55.         dataset.addValue(230"廣州""梨子");  
  56.         dataset.addValue(330"北京""葡萄");  
  57.         dataset.addValue(340"上海""葡萄");  
  58.         dataset.addValue(340"廣州""葡萄");  
  59.         dataset.addValue(420"北京""香蕉");  
  60.         dataset.addValue(430"上海""香蕉");  
  61.         dataset.addValue(400"廣州""香蕉");  
  62.         dataset.addValue(510"北京""荔枝");  
  63.         dataset.addValue(530"上海""荔枝");  
  64.         dataset.addValue(510"廣州""荔枝");  
  65.         return dataset;  
  66.     }  
  67.   
  68.       
  69.     private static void processChart(JFreeChart chart) {  
  70.         CategoryPlot plot = chart.getCategoryPlot();  
  71.         CategoryAxis domainAxis = plot.getDomainAxis();  
  72.         ValueAxis rAxis = plot.getRangeAxis();  
  73.         chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,  
  74.                 RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);  
  75.         TextTitle textTitle = chart.getTitle();  
  76.         textTitle.setFont(new Font("宋體", Font.PLAIN, 20));  
  77.         domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));  
  78.         domainAxis.setLabelFont(new Font("宋體", Font.PLAIN, 12));  
  79.         rAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));  
  80.         rAxis.setLabelFont(new Font("宋體", Font.PLAIN, 12));  
  81.         chart.getLegend().setItemFont(new Font("宋體", Font.PLAIN, 12));  
  82.         // renderer.setItemLabelGenerator(new LabelGenerator(0.0));  
  83.         // renderer.setItemLabelFont(new Font("宋體", Font.PLAIN, 12));  
  84.         // renderer.setItemLabelsVisible(true);  
  85.     }  
  86.   
  87.       
  88.     private static void writeChartAsImage(JFreeChart chart) {  
  89.         FileOutputStream fos_jpg = null;  
  90.         try {  
  91.             fos_jpg = new FileOutputStream("D:\\test\\fruit.jpg");  
  92.             ChartUtilities.writeChartAsJPEG(fos_jpg, 1, chart, 400300null);  
  93.         } catch (Exception e) {  
  94.             e.printStackTrace();  
  95.         } finally {  
  96.             try {  
  97.                 fos_jpg.close();  
  98.             } catch (Exception e) {  
  99.             }  
  100.         }  
  101.     }  
  102. }  
package chart.demo02;

import java.awt.Font;
import java.awt.RenderingHints;
import java.io.FileOutputStream;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;

public class BarChartDemo {
        public static void main(String[] args) {
                // 1. 得到數據
                CategoryDataset dataset = getDataSet();
                // 2. 構造chart
                JFreeChart chart = ChartFactory.createBarChart3D(
                                "水果產量圖", // 圖表標題
                                "水果", // 目錄軸的顯示標籤--橫軸
                                "產量", // 數值軸的顯示標籤--縱軸
                                dataset, // 數據集
                                PlotOrientation.VERTICAL, // 圖表方向:水平、
                                true, // 是否顯示圖例(對於簡單的柱狀圖必須
                                false, // 是否生成工具
                                false // 是否生成URL鏈接
                                );
                // 3. 處理chart中文顯示問題
                processChart(chart);

                // 4. chart輸出圖片
                writeChartAsImage(chart);

                // 5. chart 以swing形式輸出
                ChartFrame pieFrame = new ChartFrame("XXX", chart);
                pieFrame.pack();
                pieFrame.setVisible(true);

        }

        
        private static CategoryDataset getDataSet() {
                DefaultCategoryDataset dataset = new DefaultCategoryDataset();
                dataset.addValue(100, "北京", "蘋果");
                dataset.addValue(120, "上海", "蘋果");
                dataset.addValue(160, "廣州", "蘋果");
                dataset.addValue(210, "北京", "梨子");
                dataset.addValue(220, "上海", "梨子");
                dataset.addValue(230, "廣州", "梨子");
                dataset.addValue(330, "北京", "葡萄");
                dataset.addValue(340, "上海", "葡萄");
                dataset.addValue(340, "廣州", "葡萄");
                dataset.addValue(420, "北京", "香蕉");
                dataset.addValue(430, "上海", "香蕉");
                dataset.addValue(400, "廣州", "香蕉");
                dataset.addValue(510, "北京", "荔枝");
                dataset.addValue(530, "上海", "荔枝");
                dataset.addValue(510, "廣州", "荔枝");
                return dataset;
        }

        
        private static void processChart(JFreeChart chart) {
                CategoryPlot plot = chart.getCategoryPlot();
                CategoryAxis domainAxis = plot.getDomainAxis();
                ValueAxis rAxis = plot.getRangeAxis();
                chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,
                                RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
                TextTitle textTitle = chart.getTitle();
                textTitle.setFont(new Font("宋體", Font.PLAIN, 20));
                domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));
                domainAxis.setLabelFont(new Font("宋體", Font.PLAIN, 12));
                rAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));
                rAxis.setLabelFont(new Font("宋體", Font.PLAIN, 12));
                chart.getLegend().setItemFont(new Font("宋體", Font.PLAIN, 12));
                // renderer.setItemLabelGenerator(new LabelGenerator(0.0));
                // renderer.setItemLabelFont(new Font("宋體", Font.PLAIN, 12));
                // renderer.setItemLabelsVisible(true);
        }

        
        private static void writeChartAsImage(JFreeChart chart) {
                FileOutputStream fos_jpg = null;
                try {
                        fos_jpg = new FileOutputStream("D:\\test\\fruit.jpg");
                        ChartUtilities.writeChartAsJPEG(fos_jpg, 1, chart, 400, 300, null);
                } catch (Exception e) {
                        e.printStackTrace();
                } finally {
                        try {
                                fos_jpg.close();
                        } catch (Exception e) {
                        }
                }
        }
}


效果圖如下:

接下來看其他的圖表的生成:

餅狀圖:

  1. public void createPieChart() {  
  2.         DefaultPieDataset dataset = new DefaultPieDataset();  
  3.         dataset.setValue("蘋果"250);  
  4.         dataset.setValue("桔子"350);  
  5.         dataset.setValue("梨子"200);  
  6.         dataset.setValue("香蕉"50);  
  7.         dataset.setValue("荔枝"150);  
  8.         JFreeChart chart = ChartFactory.createPieChart("水果產量比率圖", dataset,  
  9.                 truetruetrue);  
  10.   
  11.         Plot cp = chart.getPlot();  
  12.         cp.setBackgroundPaint(ChartColor.WHITE); // 背景色設置  
  13.   
  14.         // ChartFrame frame = new ChartFrame("水果產量比率圖 ", chart, true);  
  15.         // frame.pack();  
  16.         // frame.setVisible(true);  
  17.   
  18.         try {  
  19.             ChartUtilities.saveChartAsPNG(new File("D:\\test\\PieChart.png"),  
  20.                     chart, 800500);  
  21.         } catch (IOException e) {  
  22.             e.printStackTrace();  
  23.         }  
  24.     }  
public void createPieChart() {
                DefaultPieDataset dataset = new DefaultPieDataset();
                dataset.setValue("蘋果", 250);
                dataset.setValue("桔子", 350);
                dataset.setValue("梨子", 200);
                dataset.setValue("香蕉", 50);
                dataset.setValue("荔枝", 150);
                JFreeChart chart = ChartFactory.createPieChart("水果產量比率圖", dataset,
                                true, true, true);

                Plot cp = chart.getPlot();
                cp.setBackgroundPaint(ChartColor.WHITE); // 背景色設置

                // ChartFrame frame = new ChartFrame("水果產量比率圖 ", chart, true);
                // frame.pack();
                // frame.setVisible(true);

                try {
                        ChartUtilities.saveChartAsPNG(new File("D:\\test\\PieChart.png"),
                                        chart, 800, 500);
                } catch (IOException e) {
                        e.printStackTrace();
                }
        }

3D餅狀圖
  1. public void createPieChart3D() {  
  2.         DefaultPieDataset dataset = new DefaultPieDataset();  
  3.         dataset.setValue("蘋果"250);  
  4.         dataset.setValue("桔子"350);  
  5.         dataset.setValue("梨子"200);  
  6.         dataset.setValue("香蕉"50);  
  7.         dataset.setValue("荔枝"150);  
  8.         JFreeChart chart = ChartFactory.createPieChart3D("水果產量比率圖", dataset,  
  9.                 truetruetrue);  
  10.         PiePlot3D plot = (PiePlot3D) chart.getPlot();  
  11.         // 設置開始角度  
  12.         plot.setStartAngle(150D);  
  13.         // 設置方向爲"順時針方向"  
  14.         plot.setDirection(Rotation.CLOCKWISE);  
  15.         // 設置透明度,0.5F爲半透明,1爲不透明,0爲全透明  
  16.         plot.setForegroundAlpha(1F);  
  17.         // 沒有數據的時候顯示的內容  
  18.         plot.setNoDataMessage("無數據顯示");  
  19.         // 背景色設置  
  20.         plot.setBackgroundPaint(ChartColor.WHITE);  
  21.         // ChartFrame frame = new ChartFrame("水果產量比率圖 ", chart, true);  
  22.         // frame.pack();  
  23.         // frame.setVisible(true);  
  24.   
  25.         try {  
  26.             ChartUtilities.saveChartAsPNG(new File("D:\\test\\PieChart3D.png"),  
  27.                     chart, 800500);  
  28.         } catch (IOException e) {  
  29.             e.printStackTrace();  
  30.         }  
  31.     }  
public void createPieChart3D() {
                DefaultPieDataset dataset = new DefaultPieDataset();
                dataset.setValue("蘋果", 250);
                dataset.setValue("桔子", 350);
                dataset.setValue("梨子", 200);
                dataset.setValue("香蕉", 50);
                dataset.setValue("荔枝", 150);
                JFreeChart chart = ChartFactory.createPieChart3D("水果產量比率圖", dataset,
                                true, true, true);
                PiePlot3D plot = (PiePlot3D) chart.getPlot();
                // 設置開始角度
                plot.setStartAngle(150D);
                // 設置方向爲"順時針方向"
                plot.setDirection(Rotation.CLOCKWISE);
                // 設置透明度,0.5F爲半透明,1爲不透明,0爲全透明
                plot.setForegroundAlpha(1F);
                // 沒有數據的時候顯示的內容
                plot.setNoDataMessage("無數據顯示");
                // 背景色設置
                plot.setBackgroundPaint(ChartColor.WHITE);
                // ChartFrame frame = new ChartFrame("水果產量比率圖 ", chart, true);
                // frame.pack();
                // frame.setVisible(true);

                try {
                        ChartUtilities.saveChartAsPNG(new File("D:\\test\\PieChart3D.png"),
                                        chart, 800, 500);
                } catch (IOException e) {
                        e.printStackTrace();
                }
        }

柱狀圖:
  1. public void createColumnChart() {  
  2.         DefaultCategoryDataset dataset = new DefaultCategoryDataset();  
  3.         dataset.addValue(100"北京""蘋果");  
  4.         dataset.addValue(100"上海""蘋果");  
  5.         dataset.addValue(100"廣州""蘋果");  
  6.         dataset.addValue(200"北京""梨子");  
  7.         dataset.addValue(200"上海""梨子");  
  8.         dataset.addValue(200"廣州""梨子");  
  9.         dataset.addValue(300"北京""葡萄");  
  10.         dataset.addValue(300"上海""葡萄");  
  11.         dataset.addValue(300"廣州""葡萄");  
  12.         dataset.addValue(400"北京""香蕉");  
  13.         dataset.addValue(400"上海""香蕉");  
  14.         dataset.addValue(400"廣州""香蕉");  
  15.         dataset.addValue(500"北京""荔枝");  
  16.         dataset.addValue(500"上海""荔枝");  
  17.         dataset.addValue(500"廣州""荔枝");  
  18.   
  19.         JFreeChart chart = ChartFactory.createBarChart("水果產量圖""水量""產量",  
  20.                 dataset, PlotOrientation.VERTICAL, truetruetrue);  
  21.   
  22.         CategoryPlot cp = chart.getCategoryPlot();  
  23.         cp.setBackgroundPaint(ChartColor.WHITE); // 背景色設置  
  24.         cp.setRangeGridlinePaint(ChartColor.GRAY); // 網格線色設置  
  25.   
  26.         // ChartFrame frame=new ChartFrame ("水果產量圖 ",chart,true);  
  27.         // frame.pack();  
  28.         // frame.setVisible(true);  
  29.   
  30.         try {  
  31.             ChartUtilities.saveChartAsPNG(new File("D:\\test\\ColumnChart.png"),  
  32.                     chart, 800500);  
  33.         } catch (IOException e) {  
  34.             e.printStackTrace();  
  35.         }  
  36.     }  
public void createColumnChart() {
                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, "廣州", "荔枝");

                JFreeChart chart = ChartFactory.createBarChart("水果產量圖", "水量", "產量",
                                dataset, PlotOrientation.VERTICAL, true, true, true);

                CategoryPlot cp = chart.getCategoryPlot();
                cp.setBackgroundPaint(ChartColor.WHITE); // 背景色設置
                cp.setRangeGridlinePaint(ChartColor.GRAY); // 網格線色設置

                // ChartFrame frame=new ChartFrame ("水果產量圖 ",chart,true);
                // frame.pack();
                // frame.setVisible(true);

                try {
                        ChartUtilities.saveChartAsPNG(new File("D:\\test\\ColumnChart.png"),
                                        chart, 800, 500);
                } catch (IOException e) {
                        e.printStackTrace();
                }
        }

折線圖:

  1. public void createLineChart() {  
  2.         DefaultCategoryDataset dataset = new DefaultCategoryDataset();  
  3.         dataset.addValue(100"北京""蘋果");  
  4.         dataset.addValue(200"上海""蘋果");  
  5.         dataset.addValue(300"廣州""蘋果");  
  6.         dataset.addValue(400"北京""梨子");  
  7.         dataset.addValue(500"上海""梨子");  
  8.         dataset.addValue(600"廣州""梨子");  
  9.         dataset.addValue(700"北京""葡萄");  
  10.         dataset.addValue(800"上海""葡萄");  
  11.         dataset.addValue(900"廣州""葡萄");  
  12.         dataset.addValue(800"北京""香蕉");  
  13.         dataset.addValue(700"上海""香蕉");  
  14.         dataset.addValue(600"廣州""香蕉");  
  15.         dataset.addValue(500"北京""荔枝");  
  16.         dataset.addValue(400"上海""荔枝");  
  17.         dataset.addValue(300"廣州""荔枝");  
  18.         JFreeChart chart = ChartFactory.createLineChart("水果產量圖 ""水果""產量",  
  19.                 dataset, PlotOrientation.VERTICAL, truetruetrue);  
  20.   
  21.         CategoryPlot cp = chart.getCategoryPlot();  
  22.         cp.setBackgroundPaint(ChartColor.WHITE); // 背景色設置  
  23.         cp.setRangeGridlinePaint(ChartColor.GRAY); // 網格線色設置  
  24.   
  25.         // ChartFrame frame=new ChartFrame ("水果產量圖 ",chart,true);  
  26.         // frame.pack();  
  27.         // frame.setVisible(true);  
  28.   
  29.         try {  
  30.             ChartUtilities.saveChartAsPNG(new File("D:\\test\\LineChart.png"),  
  31.                     chart, 800500);  
  32.         } catch (IOException e) {  
  33.             e.printStackTrace();  
  34.         }  
  35.     }  
public void createLineChart() {
                DefaultCategoryDataset dataset = new DefaultCategoryDataset();
                dataset.addValue(100, "北京", "蘋果");
                dataset.addValue(200, "上海", "蘋果");
                dataset.addValue(300, "廣州", "蘋果");
                dataset.addValue(400, "北京", "梨子");
                dataset.addValue(500, "上海", "梨子");
                dataset.addValue(600, "廣州", "梨子");
                dataset.addValue(700, "北京", "葡萄");
                dataset.addValue(800, "上海", "葡萄");
                dataset.addValue(900, "廣州", "葡萄");
                dataset.addValue(800, "北京", "香蕉");
                dataset.addValue(700, "上海", "香蕉");
                dataset.addValue(600, "廣州", "香蕉");
                dataset.addValue(500, "北京", "荔枝");
                dataset.addValue(400, "上海", "荔枝");
                dataset.addValue(300, "廣州", "荔枝");
                JFreeChart chart = ChartFactory.createLineChart("水果產量圖 ", "水果", "產量",
                                dataset, PlotOrientation.VERTICAL, true, true, true);

                CategoryPlot cp = chart.getCategoryPlot();
                cp.setBackgroundPaint(ChartColor.WHITE); // 背景色設置
                cp.setRangeGridlinePaint(ChartColor.GRAY); // 網格線色設置

                // ChartFrame frame=new ChartFrame ("水果產量圖 ",chart,true);
                // frame.pack();
                // frame.setVisible(true);

                try {
                        ChartUtilities.saveChartAsPNG(new File("D:\\test\\LineChart.png"),
                                        chart, 800, 500);
                } catch (IOException e) {
                        e.printStackTrace();
                }
        }

3D折線圖:
  1. public void createLineChart3D() {  
  2.         DefaultCategoryDataset dataset = new DefaultCategoryDataset();  
  3.         dataset.addValue(300"北京""蘋果");  
  4.         dataset.addValue(100"上海""蘋果");  
  5.         dataset.addValue(900"廣州""蘋果");  
  6.         dataset.addValue(200"北京""梨子");  
  7.         dataset.addValue(200"上海""梨子");  
  8.         dataset.addValue(700"廣州""梨子");  
  9.         dataset.addValue(300"北京""葡萄");  
  10.         dataset.addValue(300"上海""葡萄");  
  11.         dataset.addValue(300"廣州""葡萄");  
  12.         dataset.addValue(400"北京""香蕉");  
  13.         dataset.addValue(800"上海""香蕉");  
  14.         dataset.addValue(400"廣州""香蕉");  
  15.         dataset.addValue(100"北京""荔枝");  
  16.         dataset.addValue(500"上海""荔枝");  
  17.         dataset.addValue(500"廣州""荔枝");  
  18.         JFreeChart chart = ChartFactory.createLineChart3D("水果產量圖 ""水果""產量",  
  19.                 dataset, PlotOrientation.VERTICAL, truetruetrue);  
  20.   
  21.         CategoryPlot cp = chart.getCategoryPlot();  
  22.         cp.setBackgroundPaint(ChartColor.WHITE); // 背景色設置  
  23.         cp.setRangeGridlinePaint(ChartColor.GRAY); // 網格線色設置  
  24.   
  25.         // ChartFrame frame=new ChartFrame ("水果產量圖 ",chart,true);  
  26.         // frame.pack();  
  27.         // frame.setVisible(true);  
  28.   
  29.         try {  
  30.             ChartUtilities.saveChartAsPNG(new File("D:\\test\\LineChart3D.png"),  
  31.                     chart, 800500);  
  32.         } catch (IOException e) {  
  33.             e.printStackTrace();  
  34.         }  
  35.     }  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章