官網:http://www.jfree.org/
          主要步驟:
              1.導包
                  activation.jar
                  jcommon-1.0.8.jar
                  jfreechart-1.0.6.jar
              2.設定數據源
              3.向數據源中插值
              4.使用ChartFactory來創建JFreeChart
                  JFreeChart chart = ChartFactory.create...
              5.創建文件
              
              注意:只支持png和JPEG格式

          JFreeChart可以創建的所有圖形:
          http://www.jfree.org/jfreechart/samples.html

          以餅狀圖為例
          1:將生成圖片保存至某個文件夾中
          代碼如下:

           1 package com.test;
           2 
           3 import java.awt.Color;
           4 import java.awt.Font;
           5 import java.io.File;
           6 import java.io.IOException;
           7 import java.util.Hashtable;
           8 import java.util.Map;
           9 import org.jfree.chart.ChartFactory;
          10 import org.jfree.chart.ChartUtilities;
          11 import org.jfree.chart.JFreeChart;
          12 import org.jfree.chart.title.TextTitle;
          13 import org.jfree.data.general.DefaultKeyedValuesDataset;
          14 
          15 /**
          16  * 生成餅狀圖,并將該圖保存到指定文件夾中
          17  * @author Ying-er
          18  * @time 2010-2-5上午11:32:27
          19  */
          20 public class TestMain{
          21     public static void main(String[] args){
          22         Map<String,Integer> ht=new Hashtable<String,Integer>();
          23         ht.put("美國"139800);
          24         ht.put("日本"52900);
          25         ht.put("德國"32800);
          26         ht.put("中國"30100);
          27         ht.put("英國"25700);
          28         ht.put("法國"25200);
          29         ht.put("意大利"20900);
          30         ht.put("西班牙"14100);
          31         ht.put("加拿大"13600);
          32         ht.put("俄羅斯"11400);
          33         
          34         float sum=0;
          35         for(Integer i:ht.values()){
          36             sum+=i;
          37         }
          38         
          39         // 設定數據源
          40         DefaultKeyedValuesDataset piedata = new DefaultKeyedValuesDataset();
          41 
          42         // 向數據源中插值,第一個參數為名稱,第二個參數是double數
          43         for(String nation:ht.keySet()){
          44             
          45             String temp = String.valueOf(((float)ht.get(nation))/sum*100);
          46             
          47             if(temp.indexOf(".")>=0){
          48                 String xiaoshu ="00";
          49                 String[] arr = temp.split("[.]");
          50                 if(arr[1].length()>1){
          51                     xiaoshu =  arr[1].substring(02);
          52                 }
          53                 temp = arr[0]+"."+xiaoshu;
          54             }
          55             piedata.setValue(nation+" "+temp+"%", ((float)ht.get(nation))/sum*100);
          56         }
          57         
          58         // 使用ChartFactory來創建JFreeChart
          59         JFreeChart chart = ChartFactory.createPieChart("2007世界總GDP排名", piedata, true,
          60                 truetrue);
          61         
          62         // 設定圖片標題
          63         chart.setTitle(new TextTitle("2007世界總GDP排名"new Font("隸書", Font.ITALIC, 15)));
          64 
          65         // 設定背景
          66         chart.setBackgroundPaint(Color.white);
          67         
          68         /**
          69          * 設定保存的路徑
          70          */
          71         String rfName = "test.jpeg";
          72         String fileName = "d:/"+rfName;
          73         try {
          74             /**
          75              * 第一個參數為文件名
          76              * 第二個參數為質量,取值從0f-1.0f之間
          77              * 第三個參數為哪個chart創建圖片
          78              * 4:寬度
          79              * 5:高度
          80              */
          81             /**
          82              * 注意:只支持JPEG和png格式
          83              */
          84             ChartUtilities.saveChartAsJPEG(new File(fileName), 0.9f, chart, 600,600);
          85         } catch (IOException e) {
          86             // TODO Auto-generated catch block
          87             e.printStackTrace();
          88         }
          89     }
          90 }

          2.將生成圖片放到頁面上
          所執行Servlet代碼:
            1 package com.linying.action;
            2 
            3 import java.awt.Color;
            4 import java.awt.Font;
            5 import java.util.Hashtable;
            6 import java.util.Map;
            7 
            8 import javax.servlet.RequestDispatcher;
            9 import javax.servlet.ServletException;
           10 import javax.servlet.http.HttpServlet;
           11 import javax.servlet.http.HttpServletRequest;
           12 import javax.servlet.http.HttpServletResponse;
           13 
           14 import org.jfree.chart.ChartFactory;
           15 import org.jfree.chart.JFreeChart;
           16 import org.jfree.chart.servlet.ServletUtilities;
           17 import org.jfree.chart.title.TextTitle;
           18 import org.jfree.data.general.DefaultKeyedValuesDataset;
           19 
           20 /**
           21  * 餅圖
           22  * @author Ying-er
           23  *
           24  * @time 2009-11-12下午08:03:39
           25  *
           26  */
           27 public class PieChartServlet extends HttpServlet {
           28     private static final long serialVersionUID = 56890894234786L;
           29 
           30     public void doPost(HttpServletRequest request, HttpServletResponse response)
           31             throws ServletException, java.io.IOException {
           32         request.setCharacterEncoding("UTF-8");
           33 
           34         Map<String,Integer> ht=new Hashtable<String,Integer>();
           35         ht.put("美國"139800);
           36         ht.put("日本"52900);
           37         ht.put("德國"32800);
           38         ht.put("中國"30100);
           39         ht.put("英國"25700);
           40         ht.put("法國"25200);
           41         ht.put("意大利"20900);
           42         ht.put("西班牙"14100);
           43         ht.put("加拿大"13600);
           44         ht.put("俄羅斯"11400);
           45         
           46         float sum=0;
           47         for(Integer i:ht.values()){
           48             sum+=i;
           49         }
           50         
           51         // 設定數據源
           52         DefaultKeyedValuesDataset piedata = new DefaultKeyedValuesDataset();
           53 
           54         // 向數據源中插值,第一個參數為名稱,第二個參數是double數
           55         for(String nation:ht.keySet()){
           56             
           57             String temp = String.valueOf(((float)ht.get(nation))/sum*100);
           58             
           59             if(temp.indexOf(".")>=0){
           60                 String xiaoshu ="00";
           61                 String[] arr = temp.split("[.]");
           62                 if(arr[1].length()>1){
           63                     xiaoshu =  arr[1].substring(02);
           64                 }
           65                 temp = arr[0]+"."+xiaoshu;
           66             }
           67             piedata.setValue(nation+" "+temp+"%", ((float)ht.get(nation))/sum*100);
           68         }
           69         
           70         // 使用ChartFactory來創建JFreeChart
           71         JFreeChart chart = ChartFactory.createPieChart("2007世界總GDP排名", piedata, true,
           72                 truetrue);
           73         
           74         // 設定圖片標題
           75         chart.setTitle(new TextTitle("2007世界總GDP排名"new Font("隸書", Font.ITALIC, 15)));
           76 
           77         // 設定背景
           78         chart.setBackgroundPaint(Color.white);
           79         
           80         // 創建文件并將圖片地址傳遞到頁面
           81         String filename = ServletUtilities.saveChartAsPNG(chart, 500300,
           82                 null, request.getSession());
           83         String graphURL = request.getContextPath()
           84                 + "/displayChart?filename=" + filename;
           85         request.setAttribute("graphURL", graphURL);
           86         
           87         // 標識
           88         request.setAttribute("msg""餅圖效果");
           89 
           90         // 頁面轉向
           91         RequestDispatcher dispatcher = request
           92                 .getRequestDispatcher("/web/page/chart.jsp");
           93         dispatcher.forward(request, response);
           94         return;
           95     }
           96 
           97     public void doGet(HttpServletRequest request, HttpServletResponse response)
           98             throws ServletException, java.io.IOException {
           99         doPost(request, response);
          100     }
          101 }
          102 
          chart.jsp代碼:
           1 <%@ page contentType="text/html; charset=UTF-8"%>
           2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
           3 <html>
           4 <head>
           5 <title>JFreeChart圖表效果</title>
           6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
           7 <link rel="stylesheet" rev="stylesheet" href="web/css/style.css"
           8     type="text/css" />
           9 </head>
          10 
          11 <body>
          12     <div id="bodyDiv">
          13         <div id="header">
          14             <jsp:include page="/web/page/branch/header.jsp"/>
          15         </div>
          16         <div id="sidebar">
          17             <jsp:include page="/web/page/branch/sidebar.jsp"/>
          18         </div>
          19         <div id="content">
          20             <table border=0 align="center">
          21             <%                
          22                 out.print("<tr>");
          23                 String graphURL=(String)request.getAttribute("graphURL");            
          24                 out.print("<td colspan=4 align=\"center\"><img src=\""+graphURL+"\"/></td>");
          25                 out.print("</tr>");                
          26             %>
          27             </table>
          28         </div>
          29         <div id="footer">
          30             <jsp:include page="/web/page/branch/footer.jsp"/>
          31         </div>
          32     </div>
          33 </body>
          34 </html>
          35 
          36 
          37 
          38 



          posted on 2010-02-05 15:27 Ying-er 閱讀(581) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 措勤县| 九寨沟县| 岳西县| 富裕县| 古田县| 岚皋县| 富宁县| 万宁市| 衡南县| 黄梅县| 衡水市| 沙雅县| 禹州市| 依安县| 蒲城县| 莲花县| 城口县| 崇义县| 察雅县| 阿拉善右旗| 大化| 罗源县| 兴山县| 江油市| 安平县| 武川县| 金溪县| 监利县| 城口县| 蒙山县| 息烽县| 宁明县| 莱阳市| 建瓯市| 阳城县| 达日县| 四川省| 登封市| 广灵县| 会理县| 武义县|