使用JFreeChar生成圖表

要求:運用開源的JFreeChart生成一個柱形圖。

新建一個project,將JFreeChar的jar包導入到該project,然後新建一個SalesCountServlet  .java

代碼如下:

 

  1. package com.dr.demo;   
  2.  
  3. import java.awt.Color;  
  4. import java.awt.Font;  
  5. import java.io.FileNotFoundException;  
  6. import java.io.FileOutputStream;  
  7. import java.io.IOException;   
  8.  
  9. import org.jfree.chart.ChartFactory;  
  10. import org.jfree.chart.ChartUtilities;  
  11. import org.jfree.chart.JFreeChart;  
  12. import org.jfree.chart.axis.CategoryAxis;  
  13. import org.jfree.chart.axis.CategoryLabelPositions;  
  14. import org.jfree.chart.axis.ValueAxis;  
  15. import org.jfree.chart.plot.CategoryPlot;  
  16. import org.jfree.chart.plot.PlotOrientation;  
  17. import org.jfree.chart.title.TextTitle;  
  18. import org.jfree.data.category.CategoryDataset;  
  19. import org.jfree.data.category.DefaultCategoryDataset;   
  20.  
  21. public class SalesCountServlet  {   
  22.  
  23.     protected static void doGet() {  
  24.         System.out.println("圖表已經建立!");  
  25.         CategoryDataset dataset = getDataSet();  
  26.         String fileName = "SalesCount.jpg";//文件名稱  
  27.         JFreeChart chart = ChartFactory.createBarChart3D("產品銷量圖"// 圖表標題  
  28.                 "產品"// 目錄軸的顯示標籤  
  29.                 "銷量"// 數值軸的顯示標籤  
  30.                 dataset, // 數據集  
  31.                 PlotOrientation.VERTICAL, // 圖表方向:水平、垂直  
  32.                 true// 是否顯示圖例(對於簡單的柱狀圖必須是false)  
  33.                 false// 是否生成工具  
  34.                 false // 是否生成URL鏈接  
  35.                 );  
  36.         configFont(chart);//設置中文格式   
  37.  
  38.         FileOutputStream fos_jpg = null;  
  39.         try {  
  40.             String statImagePath = "d:";//存放圖表的路徑  
  41.             try {  
  42.                 fos_jpg = new FileOutputStream(statImagePath+ fileName);  
  43.             } catch (FileNotFoundException e) {  
  44.                 e.printStackTrace();  
  45.             }  
  46.             try {  
  47.                 ChartUtilities.writeChartAsJPEG(fos_jpg, 0.5f, chart, 400300,null);  
  48.             } catch (IOException e) {  
  49.                 e.printStackTrace();  
  50.             }  
  51.         } finally {  
  52.             try {  
  53.                 fos_jpg.close();  
  54.             } catch (Exception e) {  
  55.                 e.printStackTrace();  
  56.             }  
  57.         }  
  58.     }  
  59.      public static void configFont(JFreeChart chart){     
  60.             // 配置字體     
  61.             Font xfont = new Font("宋體",Font.PLAIN,12) ;// X軸     
  62.             Font yfont = new Font("宋體",Font.PLAIN,12) ;// Y軸     
  63.             Font kfont = new Font("宋體",Font.PLAIN,12) ;// 底部     
  64.             Font titleFont = new Font("隸書", Font.BOLD , 25) ; // 圖片標題     
  65.             CategoryPlot plot = chart.getCategoryPlot();// 圖形的繪製結構對象     
  66.             // 圖片標題     
  67.             chart.setTitle(new TextTitle(chart.getTitle().getText(),titleFont));     
  68.             // 底部     
  69.             chart.getLegend().setItemFont(kfont);     
  70.             // X 軸     
  71.             CategoryAxis domainAxis = plot.getDomainAxis();        
  72.             domainAxis.setLabelFont(xfont);// 軸標題     
  73.             domainAxis.setTickLabelFont(xfont);// 軸數值       
  74.             domainAxis.setTickLabelPaint(Color.BLUE) ; // 字體顏色     
  75.             domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // 橫軸上的label斜顯示      
  76.             // Y 軸     
  77.             ValueAxis rangeAxis = plot.getRangeAxis();        
  78.             rangeAxis.setLabelFont(yfont);      
  79.             rangeAxis.setLabelPaint(Color.BLUE) ; // 字體顏色     
  80.             rangeAxis.setTickLabelFont(yfont);       
  81.         }    
  82.  
  83.     private static CategoryDataset getDataSet() {  
  84.         DefaultCategoryDataset dataset = new DefaultCategoryDataset();  
  85.             dataset.addValue(20"銷售圖表""蘋果");  
  86.             dataset.addValue(20"銷售圖表""梨");  
  87.             dataset.addValue(30"銷售圖表""香蕉");  
  88.             dataset.addValue(40"銷售圖表""葡萄");  
  89.             dataset.addValue(50"銷售圖表""桔子");  
  90.         return dataset;  
  91.     }  
  92.     public static void main(String args[]){  
  93.         doGet();  
  94.     }  
  95. }   
  96.  

 

 

運行程序後就會在d盤根目錄下找到一個SalesCount.jpg的文件,打開顯示結果如下:

 

希望各位大蝦不吝賜教!

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