簡易代碼之家

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            157 Posts :: 2 Stories :: 57 Comments :: 0 Trackbacks

          jFreeChart是Java開發中常用的統計類組件,主要包括柱狀圖,餅狀圖等。下面我們介紹一下jFreeChart最簡單的用法。

          首先需要導入jFreeChart的jar包,放在項目web\WEB-INF\lib文件夾下。然后我們以最簡潔的代碼實現一個統計功能。

          1.柱狀圖

          import java.awt.Color;
          import java.awt.Font;
          import java.io.FileNotFoundException;
          import java.io.FileOutputStream;
          import java.io.IOException;

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

          public class BarChartTest {
              
              
          public static void main(String[] args) {
                  DefaultCategoryDataset dataset 
          = new DefaultCategoryDataset();
                  
                  dataset.addValue(
          20"企業備案數""北京局");
                  dataset.addValue(
          18"企業備案數""上海局");
                  dataset.addValue(
          16"企業備案數""天津局");
                  dataset.addValue(
          15"企業備案數""重慶局");
                  dataset.addValue(
          45"企業備案數""山東局");
                  
                  JFreeChart chart 
          = ChartFactory.createBarChart("企業備案圖""直屬局""企業備案數",dataset, PlotOrientation.HORIZONTAL, truefalsefalse);
                  
                  
          /***************A start*********/
                  
          //設置標題字體樣式
                  TextTitle textTitle = chart.getTitle();
                  textTitle.setFont(
          new Font("黑體", Font.PLAIN, 20));
                  
          //設置柱狀體顏色
                  CategoryPlot categoryplot = (CategoryPlot) chart.getPlot();
                  categoryplot.getRenderer().setSeriesPaint(
          0new Color(228,109,10));
                  NumberAxis numberaxis 
          = (NumberAxis) categoryplot.getRangeAxis();
                  CategoryAxis domainAxis 
          = categoryplot.getDomainAxis();
                  
          //設置X軸坐標上的字體樣式
                  domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));
                  
          //設置X軸的標題字體樣式
                  domainAxis.setLabelFont(new Font("宋體", Font.PLAIN, 12));
                  
          //設置Y軸坐標上的字體樣式
                  numberaxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));
                  
          //設置Y軸的標題字體樣式
                  numberaxis.setLabelFont(new Font("黑體", Font.PLAIN, 12));
                  
          //設置圖片最底部字體樣式
                  if (chart.getLegend() != null{
                      chart.getLegend().setItemFont(
          new Font("宋體", Font.PLAIN, 12));
                  }

                  
          /***************A end*********/
                  
          try {
                      ChartUtilities.writeChartAsPNG(
          new FileOutputStream("D:\\barChart.jpg"), chart, 400200);
                  }
           catch (FileNotFoundException e) {
                      e.printStackTrace();
                  }
           catch (IOException e) {
                      e.printStackTrace();
                  }

              }

          }

          生成的文件顯示效果如下:

          2.餅狀圖
          import java.awt.Color;
          import java.awt.Font;
          import java.io.FileNotFoundException;
          import java.io.FileOutputStream;
          import java.io.IOException;
          import java.text.DecimalFormat;
          import java.text.NumberFormat;

          import org.jfree.chart.ChartFactory;
          import org.jfree.chart.ChartUtilities;
          import org.jfree.chart.JFreeChart;
          import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
          import org.jfree.chart.plot.PiePlot;
          import org.jfree.data.general.DefaultPieDataset;

          public class PieChartTest {
              
              
          public static void main(String[] args){
                  DefaultPieDataset pieDataset 
          = new DefaultPieDataset();
                  pieDataset.setValue(
          "北京局",20);
                  pieDataset.setValue(
          "上海局",18);
                  pieDataset.setValue(
          "天津局",16);
                  pieDataset.setValue(
          "重慶局",15);
                  pieDataset.setValue(
          "山東局",45);
                  
                  JFreeChart chart 
          = ChartFactory.createPieChart3D("企業備案圖",pieDataset, truefalsefalse);
                  
          /***************A start*********/
                  
          //設置標題字體樣式
                  chart.getTitle().setFont(new Font("黑體",Font.BOLD,20));
                  
          //設置餅狀圖里描述字體樣式
                  PiePlot piePlot= (PiePlot) chart.getPlot();
                  piePlot.setLabelFont(
          new Font("黑體",Font.BOLD,10));
                  
          //設置顯示百分比樣式
                  piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator( 
                          (
          "{0}({2})"), NumberFormat.getNumberInstance(), 
                          
          new DecimalFormat("0.00%"))); 
                  
          //設置統計圖背景
                  piePlot.setBackgroundPaint(Color.white);
                  
          //設置圖片最底部字體樣式
                  chart.getLegend().setItemFont(new Font("黑體",Font.BOLD,10));
                  
          /***************A end*********/
                  
          try {
                      ChartUtilities.writeChartAsPNG(
          new FileOutputStream("D:\\pieChart.jpg"), chart, 400300);
                  }
           catch (FileNotFoundException e) {
                      e.printStackTrace();
                  }
           catch (IOException e) {
                      e.printStackTrace();
                  }

              }


          }


          生成的文件顯示效果如下:

          其中以上兩段代碼中的“A”代碼塊中的內容是為了解決圖片生成過程中遇到的亂碼問題,在實際開發中可以寫到一個公共類中,此時應注意服務器的操作系統上是否缺少上述代碼中所用到的字體。關于jFreeChart詳細參數的使用請參考官方文檔。
          posted on 2010-07-21 19:48 Jakin.zhou 閱讀(1974) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 衡东县| 弋阳县| 玛曲县| 托里县| 平潭县| 上饶市| 许昌县| 来凤县| 尼玛县| 汝城县| 景德镇市| 全南县| 望奎县| 探索| 石门县| 衡山县| 柏乡县| 白沙| 永春县| 禄丰县| 瑞安市| 伊宁市| 和顺县| 广德县| 阳春市| 丹巴县| 曲阳县| 鞍山市| 旌德县| 松江区| 阜南县| 泰和县| 扬州市| 定远县| 深州市| 宁蒗| 岑巩县| 田林县| 常山县| 运城市| 城固县|