posts - 26,  comments - 14,  trackbacks - 0
          JFreeChart項目簡介

          JFreeChart是開放源代碼站點SourceForge.net上的一個JAVA項目,它主要用來各種各樣的圖表,這些圖表包括:餅圖、柱狀圖(普 通柱狀圖以及堆棧柱狀圖)、線圖、區域圖、分布圖、混合圖、甘特圖以及一些儀表盤等等。這些不同式樣的圖表基本上可以滿足目前的要求。為了減少篇幅本文主 要介紹前面三種類型的圖表,讀者可以觸類旁通去開發其他樣式的圖表。




          這里有點筆者在開發中遇見的問題需要注意的是:在使用Eclipse開發的時候會報一個莫名其妙的錯誤,錯誤可能指向某個類文件的第一行。遇到這樣的問題一般是因為沒有把Jcommon的jar包設置到項目的類路徑中的緣故。具體的原因不祥。

          1 餅圖

          對于餅圖而言,數據集的獲取用的不是同一個數據集類,另外餅圖不支持同一個類別的項目中還有子項目這樣的數據。我們只給出創建餅圖的代碼,至于寫圖表到一個文件則與柱狀圖一致,無需重復..

          實例代碼如下:

          package com.dr.demo;


          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.CategoryLabelPositions;
          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;


          /**
           *
           * @author 詹成榜
           * @date 2010-2-25
           * @ClassName PolyLine.java
           * @Email 289153044@qq.com
           * @param 餅圖
           * @param
           */

          public class SalesCountServlet  {

           protected static void doGet() {
            System.out.println("圖表已經建立!");
            
            CategoryDataset dataset = getDataSet();
            String fileName = "SalesCount.jpg";//文件名稱
            JFreeChart chart = ChartFactory.createBarChart3D("產品銷量圖", // 圖表標題
              "產品", // 目錄軸的顯示標簽
              "銷量", // 數值軸的顯示標簽
              dataset, // 數據集
              PlotOrientation.VERTICAL, // 圖表方向:水平、垂直
              true, // 是否顯示圖例(對于簡單的柱狀圖必須是false)
              false, // 是否生成工具
              false // 是否生成URL鏈接
              );
            
            configFont(chart);//設置中文格式

            FileOutputStream fos_jpg = null;
            try {
             String statImagePath = "d:";//存放文件的路徑
             try {
              fos_jpg = new FileOutputStream(statImagePath+ fileName);
             } catch (FileNotFoundException e) {
              e.printStackTrace();
             }
             try {
              ChartUtilities.writeChartAsJPEG(fos_jpg, 0.5f, chart, 400, 300,null);
             } catch (IOException e) {
              e.printStackTrace();
             }
            } finally {
             try {
              fos_jpg.close();
             } catch (Exception e) {
              e.printStackTrace();
             }
            }
              
           }
            public static void configFont(JFreeChart chart){  
                   // 配置字體  
                   Font xfont = new Font("宋體",Font.PLAIN,12) ;// X軸  
                   Font yfont = new Font("宋體",Font.PLAIN,12) ;// Y軸  
                   Font kfont = new Font("宋體",Font.PLAIN,12) ;// 底部  
                   Font titleFont = new Font("隸書", Font.BOLD , 25) ; // 圖片標題  
                   CategoryPlot plot = chart.getCategoryPlot();// 圖形的繪制結構對象  
                     
                   // 圖片標題  
                   chart.setTitle(new TextTitle(chart.getTitle().getText(),titleFont));  
                     
                   // 底部  
                   chart.getLegend().setItemFont(kfont);  
                     
                   // X 軸  
                   CategoryAxis domainAxis = plot.getDomainAxis();     
                   domainAxis.setLabelFont(xfont);// 軸標題  
                   domainAxis.setTickLabelFont(xfont);// 軸數值    
                   domainAxis.setTickLabelPaint(Color.BLUE) ; // 字體顏色  
                   domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // 橫軸上的label斜顯示   
                     
                   // Y 軸  
                   ValueAxis rangeAxis = plot.getRangeAxis();     
                   rangeAxis.setLabelFont(yfont);   
                   rangeAxis.setLabelPaint(Color.BLUE) ; // 字體顏色  
                   rangeAxis.setTickLabelFont(yfont);    
                     
               } 


           private static CategoryDataset getDataSet() {
            DefaultCategoryDataset dataset = new DefaultCategoryDataset();
             dataset.addValue(20, "銷售圖表", "蘋果");
             dataset.addValue(20, "銷售圖表", "梨");
             dataset.addValue(30, "銷售圖表", "香蕉");
             dataset.addValue(40, "銷售圖表", "葡萄");
             dataset.addValue(50, "銷售圖表", "桔子");
            
            return dataset;
           }
           public static void main(String args[]){
            
            doGet();
           }
          }

           

          posted on 2011-03-06 22:36 龍ぜ殘劍 閱讀(423) 評論(3)  編輯  收藏

          FeedBack:
          # re: JFreeChart項目簡介
          2011-12-12 14:33 | JFreeChart項目簡介
          JFreeChart項目簡介  回復  更多評論
            
          # re: JFreeChart項目簡介
          2011-12-12 14:34 | JFreeChart項目簡介
          @JFreeChart項目簡介
          JFreeChart項目簡介JFreeChart項目簡介JFreeChart項目簡介JFreeChart項目簡介JFreeChart項目簡介JFreeChart項目簡介JFreeChart項目簡介JFreeChart項目簡介  回復  更多評論
            
          # re: JFreeChart項目簡介
          2011-12-12 14:34 | JFreeChart項目簡介
          JFreeChart項目簡介
          JFreeChart項目簡介
          JFreeChart項目簡介
          JFreeChart項目簡介  回復  更多評論
            

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


          網站導航:
           
          <2011年3月>
          272812345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 池州市| 屏东市| 沭阳县| 杨浦区| 迭部县| 民丰县| 清水河县| 光山县| 黄龙县| 余庆县| 临湘市| 灵璧县| SHOW| 勐海县| 桂东县| 包头市| 文山县| 山阴县| 类乌齐县| 宁南县| 准格尔旗| 石狮市| 谢通门县| 洱源县| SHOW| 长岛县| 古浪县| 昌黎县| 莱州市| 鲁山县| 叙永县| 久治县| 探索| 鸡西市| 河北省| 伊金霍洛旗| 泸溪县| 龙岩市| 志丹县| 马尔康县| 内乡县|