春風博客

          春天里,百花香...

          導航

          <2008年4月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          統計

          公告

          MAIL: junglesong@gmail.com
          MSN: junglesong_5@hotmail.com

          Locations of visitors to this page

          常用鏈接

          留言簿(11)

          隨筆分類(224)

          隨筆檔案(126)

          個人軟件下載

          我的其它博客

          我的鄰居們

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          JFreeChat四種圖表的繪制例程

          1.平面餅圖


          Servlet代碼:
          package com.sitinspring.action;

          import java.awt.Color;
          import java.awt.Font;
          import java.util.Hashtable;
          import java.util.Map;

          import javax.servlet.RequestDispatcher;
          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          import org.jfree.chart.ChartFactory;
          import org.jfree.chart.JFreeChart;
          import org.jfree.chart.servlet.ServletUtilities;
          import org.jfree.chart.title.TextTitle;
          import org.jfree.data.general.DefaultKeyedValuesDataset;

          /**
           * 用于創建餅圖的Servlet
           * 
           * 
          @author sitinspring
           * 
           * @date 2008-2-12
           
          */

          public class PieChartServlet extends HttpServlet {
              
          private static final long serialVersionUID = 56890894234786L;

              
          public void doPost(HttpServletRequest request, HttpServletResponse response)
                      
          throws ServletException, java.io.IOException {
                  request.setCharacterEncoding(
          "UTF-8");

                  Map
          <String,Integer> ht=new Hashtable<String,Integer>();
                  ht.put(
          "美國"139800);
                  ht.put(
          "日本"52900);
                  ht.put(
          "德國"32800);
                  ht.put(
          "中國"30100);
                  ht.put(
          "英國"25700);
                  ht.put(
          "法國"25200);
                  ht.put(
          "意大利"20900);
                  ht.put(
          "西班牙"14100);
                  ht.put(
          "加拿大"13600);
                  ht.put(
          "俄羅斯"11400);
                  
                  
          float sum=0;
                  
          for(Integer i:ht.values()){
                      sum
          +=i;
                  }

                  
                  
          // 設定數據源
                  DefaultKeyedValuesDataset piedata = new DefaultKeyedValuesDataset();

                  
          // 向數據源中插值,第一個參數為名稱,第二個參數是double數
                  for(String nation:ht.keySet()){
                      piedata.setValue(nation, ((
          float)ht.get(nation))/sum*100);
                  }

                  
                  
          // 使用ChartFactory來創建JFreeChart
                  JFreeChart chart = ChartFactory.createPieChart("2007世界總GDP排名", piedata, true,
                          
          truetrue);
                  
                  
          // 設定圖片標題
                  chart.setTitle(new TextTitle("2007世界總GDP排名"new Font("隸書", Font.ITALIC, 15)));

                  
          // 設定背景
                  chart.setBackgroundPaint(Color.white);
                  
                  
          // 創建文件并將圖片地址傳遞到頁面
                  String filename = ServletUtilities.saveChartAsPNG(chart, 500300,
                          
          null, request.getSession());
                  String graphURL 
          = request.getContextPath()
                          
          + "/displayChart?filename=" + filename;
                  request.setAttribute(
          "graphURL", graphURL);
                  
                  
          // 標識
                  request.setAttribute("msg""餅圖效果");

                  
          // 頁面轉向
                  RequestDispatcher dispatcher = request
                          .getRequestDispatcher(
          "/web/page/chart.jsp");
                  dispatcher.forward(request, response);
                  
          return;
              }


              
          public void doGet(HttpServletRequest request, HttpServletResponse response)
                      
          throws ServletException, java.io.IOException {
                  doPost(request, response);
              }

          }


          頁面代碼:
          <%@ page contentType="text/html; charset=UTF-8"%>
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
          <html>
          <head>
          <title>JFreeChart圖表效果</title>
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          <link rel="stylesheet" rev="stylesheet" href="web/css/style.css"
              type
          ="text/css" />
          </head>

          <body>
              
          <div id="bodyDiv">
                  
          <div id="header">
                      
          <jsp:include page="/web/page/branch/header.jsp"/>
                  
          </div>
                  
          <div id="sidebar">
                      
          <jsp:include page="/web/page/branch/sidebar.jsp"/>
                  
          </div>
                  
          <div id="content">
                      
          <table border=0 align="center">
                      
          <%                
                          out.print(
          "<tr>");
                          
          String graphURL=(String)request.getAttribute("graphURL");            
                          out.print(
          "<td colspan=4 align=\"center\"><img src=\""+graphURL+"\"/></td>");
                          out.print(
          "</tr>");                
                      
          %>
                      
          </table>
                  
          </div>
                  
          <div id="footer">
                      
          <jsp:include page="/web/page/branch/footer.jsp"/>
                  
          </div>
              
          </div>
          </body>
          </html>

          2.3d餅圖


          Servlet代碼:
          package com.sitinspring.action;

          import java.awt.Color;
          import java.awt.Font;
          import java.util.Hashtable;
          import java.util.Map;

          import javax.servlet.RequestDispatcher;
          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          import org.jfree.chart.ChartFactory;
          import org.jfree.chart.JFreeChart;
          import org.jfree.chart.servlet.ServletUtilities;
          import org.jfree.chart.title.TextTitle;
          import org.jfree.data.general.DefaultKeyedValuesDataset;

          /**
           * 用于創建3D餅圖的Servlet
           * 
           * 
          @author sitinspring
           * 
           * @date 2008-2-12
           
          */

          public class Pie3DChartServlet extends HttpServlet {
              
          private static final long serialVersionUID = 56890894234786L;

              
          public void doPost(HttpServletRequest request, HttpServletResponse response)
                      
          throws ServletException, java.io.IOException {
                  request.setCharacterEncoding(
          "UTF-8");

                  Map
          <String,Integer> ht=new Hashtable<String,Integer>();
                  ht.put(
          "美國"139800);
                  ht.put(
          "日本"52900);
                  ht.put(
          "德國"32800);
                  ht.put(
          "中國"30100);
                  ht.put(
          "英國"25700);
                  ht.put(
          "法國"25200);
                  ht.put(
          "意大利"20900);
                  ht.put(
          "西班牙"14100);
                  ht.put(
          "加拿大"13600);
                  ht.put(
          "俄羅斯"11400);
                  
                  
          float sum=0;
                  
          for(Integer i:ht.values()){
                      sum
          +=i;
                  }

                  
                  
          // 設定數據源
                  DefaultKeyedValuesDataset piedata = new DefaultKeyedValuesDataset();

                  
          // 向數據源中插值,第一個參數為名稱,第二個參數是double數
                  for(String nation:ht.keySet()){
                      piedata.setValue(nation, ((
          float)ht.get(nation))/sum*100);
                  }

                  
                  
          // 使用ChartFactory來創建JFreeChart
                  JFreeChart chart = ChartFactory.createPieChart3D("2007世界總GDP排名", piedata, true,
                          
          truetrue);
                  
                  
          // 設定圖片標題
                  chart.setTitle(new TextTitle("2007世界總GDP排名"new Font("隸書", Font.ITALIC, 15)));

                  
          // 設定背景
                  chart.setBackgroundPaint(Color.white);
                  
                  
          // 創建文件并將圖片地址傳遞到頁面
                  String filename = ServletUtilities.saveChartAsPNG(chart, 500300,
                          
          null, request.getSession());
                  String graphURL 
          = request.getContextPath()
                          
          + "/displayChart?filename=" + filename;
                  request.setAttribute(
          "graphURL", graphURL);
                  
                  
          // 標識
                  request.setAttribute("msg""3D餅圖效果");

                  
          // 頁面轉向
                  RequestDispatcher dispatcher = request
                          .getRequestDispatcher(
          "/web/page/chart.jsp");
                  dispatcher.forward(request, response);
                  
          return;
              }


              
          public void doGet(HttpServletRequest request, HttpServletResponse response)
                      
          throws ServletException, java.io.IOException {
                  doPost(request, response);
              }

          }


          3.折線圖


          Servlet代碼:
          package com.sitinspring.action;

          import java.util.LinkedHashMap;
          import java.util.Map;

          import javax.servlet.RequestDispatcher;
          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          import org.jfree.chart.ChartFactory;
          import org.jfree.chart.JFreeChart;
          import org.jfree.chart.servlet.ServletUtilities;
          import org.jfree.data.time.Day;
          import org.jfree.data.time.TimeSeries;
          import org.jfree.data.time.TimeSeriesCollection;
          import org.jfree.data.time.TimeSeriesDataItem;

          /**
           * 用于創建折線圖的Servlet
           * 
           * 
          @author sitinspring
           * 
           * @date 2008-2-12
           
          */

          public class CurveChartServlet extends HttpServlet {
              
          private static final long serialVersionUID = 56890894234786L;

              
          public void doPost(HttpServletRequest request, HttpServletResponse response)
                      
          throws ServletException, java.io.IOException {
                  request.setCharacterEncoding(
          "UTF-8");

                  
          // 曲線圖標題
                  String title = "趨勢分析";
                  
          // 曲線圖X軸提示
                  String domain = "年份";
                  
          // 曲線圖Y軸提示
                  String range = "GDP";

                  
          // 創建時間數據源,每一個TimeSeries在圖上是一條曲線
                  TimeSeries chinaTs = new TimeSeries("中國");
                  Map
          <Integer, Integer> chinaht = new LinkedHashMap<Integer, Integer>();
                  chinaht.put(
          200222100);
                  chinaht.put(
          200314100);
                  chinaht.put(
          200427100);
                  chinaht.put(
          200538100);
                  chinaht.put(
          200629000);
                  chinaht.put(
          200790100);
                  
                  
          for (Integer i:chinaht.keySet()) {
                      chinaTs.add(
          new TimeSeriesDataItem(new Day(11, i),new Double(chinaht.get(i))));            
                  }


                  
          // 創建時間數據源,每一個TimeSeries在圖上是一條曲線
                  TimeSeries japanTs = new TimeSeries("日本");
                  Map
          <Integer, Integer> japanht = new LinkedHashMap<Integer, Integer>();
                  japanht.put(
          200043900);
                  japanht.put(
          200363500);
                  japanht.put(
          200443400);
                  japanht.put(
          200563200);
                  japanht.put(
          200653100);
                  japanht.put(
          200732900);
                  
                  
          for (Integer i:japanht.keySet()) {
                      japanTs.add(
          new TimeSeriesDataItem(new Day(11, i),new Double(japanht.get(i))));            
                  }


                  
          // 創建時間數據源,每一個TimeSeries在圖上是一條曲線
                  TimeSeries usaTs = new TimeSeries("美國");
                  Map
          <Integer, Integer> usaht = new LinkedHashMap<Integer, Integer>();
                  usaht.put(
          2001100000);
                  usaht.put(
          2003159800);
                  usaht.put(
          2004109700);
                  usaht.put(
          2005129600);
                  usaht.put(
          20069800);
                  usaht.put(
          2007149800);
                  
                  
          for (Integer i:usaht.keySet()) {
                      usaTs.add(
          new TimeSeriesDataItem(new Day(11, i),new Double(usaht.get(i))));            
                  }

                  
                  
          // 時間曲線數據集合
                  TimeSeriesCollection dataset = new TimeSeriesCollection();
                  dataset.addSeries(chinaTs);
                  dataset.addSeries(japanTs);
                  dataset.addSeries(usaTs);

                  
          // 時間曲線元素
                  JFreeChart chart = ChartFactory.createTimeSeriesChart(title, domain,
                          range, dataset, 
          truetruefalse);

                  
          // 創建文件并將圖片地址傳遞到頁面
                  String filename = ServletUtilities.saveChartAsPNG(chart, 500300,
                          
          null, request.getSession());
                  String graphURL 
          = request.getContextPath() + "/displayChart?filename="
                          
          + filename;
                  request.setAttribute(
          "graphURL", graphURL);

                  
          // 標識
                  request.setAttribute("msg""折線圖效果");

                  
          // 頁面轉向
                  RequestDispatcher dispatcher = request
                          .getRequestDispatcher(
          "/web/page/chart.jsp");
                  dispatcher.forward(request, response);
                  
          return;
              }


              
          public void doGet(HttpServletRequest request, HttpServletResponse response)
                      
          throws ServletException, java.io.IOException {
                  doPost(request, response);
              }

          }


          4.柱圖


          Servlet代碼:
          package com.sitinspring.action;

          import java.awt.Color;
          import java.awt.Font;
          import java.util.Hashtable;
          import java.util.Map;

          import javax.servlet.RequestDispatcher;
          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          import org.jfree.chart.ChartFactory;
          import org.jfree.chart.JFreeChart;
          import org.jfree.chart.plot.PlotOrientation;
          import org.jfree.chart.servlet.ServletUtilities;
          import org.jfree.chart.title.TextTitle;
          import org.jfree.data.category.DefaultCategoryDataset;

          /**
           * 用于創建柱圖的Servlet
           * 
           * 
          @author sitinspring
           * 
           * @date 2008-2-12
           
          */

          public class ColumnChartServlet extends HttpServlet {
              
          private static final long serialVersionUID = 56890894234786L;

              
          public void doPost(HttpServletRequest request, HttpServletResponse response)
                      
          throws ServletException, java.io.IOException {
                  request.setCharacterEncoding(
          "UTF-8");

                  Map
          <String,Integer> ht=new Hashtable<String,Integer>();
                  ht.put(
          "美國"139800);
                  ht.put(
          "日本"52900);
                  ht.put(
          "德國"32800);
                  ht.put(
          "中國"30100);
                  ht.put(
          "英國"25700);
                  ht.put(
          "法國"25200);
                  ht.put(
          "意大利"20900);
                  ht.put(
          "西班牙"14100);
                  ht.put(
          "加拿大"13600);
                  ht.put(
          "俄羅斯"11400);
                  
                  
          float sum=0;
                  
          for(Integer i:ht.values()){
                      sum
          +=i;
                  }

                  
                  
          // 設定數據源
                  DefaultCategoryDataset dataset = new DefaultCategoryDataset();

                  
          // 向數據源中插值,第一個參數為名稱,第二個參數是double數
                  int i=0;
                  
          for(String nation:ht.keySet()){
                      i
          ++;
                      dataset.addValue((
          float)ht.get(nation), String.valueOf(i), nation);
                  }

                  
                  
          // 使用ChartFactory來創建JFreeChart
                  JFreeChart chart = ChartFactory.createBarChart3D("收支統計圖""國家",
                          
          "數額", dataset, PlotOrientation.VERTICAL, falsefalse,
                          
          false);
                  
                  
          // 設定圖片標題
                  chart.setTitle(new TextTitle("2007世界總GDP排名"new Font("隸書", Font.ITALIC, 15)));

                  
          // 設定背景
                  chart.setBackgroundPaint(Color.white);
                  
                  
          // 創建文件并將圖片地址傳遞到頁面
                  String filename = ServletUtilities.saveChartAsPNG(chart, 500300,
                          
          null, request.getSession());
                  String graphURL 
          = request.getContextPath()
                          
          + "/displayChart?filename=" + filename;
                  request.setAttribute(
          "graphURL", graphURL);
                  
                  
          // 標識
                  request.setAttribute("msg""3D柱圖效果");

                  
          // 頁面轉向
                  RequestDispatcher dispatcher = request
                          .getRequestDispatcher(
          "/web/page/chart.jsp");
                  dispatcher.forward(request, response);
                  
          return;
              }


              
          public void doGet(HttpServletRequest request, HttpServletResponse response)
                      
          throws ServletException, java.io.IOException {
                  doPost(request, response);
              }

          }



          例程下載(請在lib中加入jcommon-1.0.8.jar和jfreechart-1.0.6.jar):
          http://www.aygfsteel.com/Files/sitinspring/JFreeChartSample20080408130142.rar

          posted on 2008-04-08 13:00 sitinspring 閱讀(3604) 評論(6)  編輯  收藏 所屬分類: Web開發

          評論

          # re: JFreeChat四種圖表的繪制例程 2008-05-30 13:46 we

          不是時間曲線圖如何制作?能不能些個例子謝謝!  回復  更多評論   

          # re: JFreeChat四種圖表的繪制例程 2010-08-09 13:43 zhangnian

          我按你這樣寫,為什么圖片不顯示  回復  更多評論   

          # re: JFreeChat四種圖表的繪制例程 2010-08-09 13:44 zhangnian

          可以把那個曲線圖給我份完整的代碼嗎,謝謝!714378662@QQ.com  回復  更多評論   

          # re: JFreeChat四種圖表的繪制例程 2010-08-09 14:06 何楊

          http://www.aygfsteel.com/Files/sitinspring/JFreeChartSample20080408130142.rar  回復  更多評論   

          # re: JFreeChat四種圖表的繪制例程[未登錄] 2010-08-11 11:55 楊超

          @zhangnian
          在你的web.xml 里加上:  回復  更多評論   

          # re: JFreeChat四種圖表的繪制例程[未登錄] 2010-08-11 11:55 楊超


          <servlet>
          <servlet-name>DisplayChart</servlet-name>
          <servlet-class>
          org.jfree.chart.servlet.DisplayChart
          </servlet-class>
          </servlet>
          <servlet-mapping>
          <servlet-name>DisplayChart</servlet-name>
          <url-pattern>/displayChart</url-pattern>
          </servlet-mapping>  回復  更多評論   

          sitinspring(http://www.aygfsteel.com)原創,轉載請注明出處.
          主站蜘蛛池模板: 永新县| 淅川县| 永修县| 石渠县| 自贡市| 佛冈县| 那曲县| 张家口市| 霍邱县| 平塘县| 雅安市| 晴隆县| 云龙县| 敦煌市| 佛山市| 苗栗市| 富民县| 潜江市| 磐安县| 高碑店市| 永春县| 西青区| 资阳市| 杭锦后旗| 武山县| 诸城市| 丹寨县| 万全县| 内黄县| 米脂县| 乌拉特后旗| 张家港市| 苍南县| 永城市| 茌平县| 雷州市| 南雄市| 洛阳市| 泸溪县| 桂阳县| 龙南县|