春風(fēng)博客

          春天里,百花香...

          導(dǎo)航

          <2010年8月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          統(tǒng)計

          公告

          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;

          /**
           * 用于創(chuàng)建餅圖的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;
                  }

                  
                  
          // 設(shè)定數(shù)據(jù)源
                  DefaultKeyedValuesDataset piedata = new DefaultKeyedValuesDataset();

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

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

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

                  
          // 頁面轉(zhuǎn)向
                  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;

          /**
           * 用于創(chuàng)建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;
                  }

                  
                  
          // 設(shè)定數(shù)據(jù)源
                  DefaultKeyedValuesDataset piedata = new DefaultKeyedValuesDataset();

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

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

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

                  
          // 頁面轉(zhuǎn)向
                  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;

          /**
           * 用于創(chuàng)建折線圖的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");

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

                  
          // 創(chuàng)建時間數(shù)據(jù)源,每一個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))));            
                  }


                  
          // 創(chuàng)建時間數(shù)據(jù)源,每一個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))));            
                  }


                  
          // 創(chuàng)建時間數(shù)據(jù)源,每一個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))));            
                  }

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

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

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

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

                  
          // 頁面轉(zhuǎn)向
                  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;

          /**
           * 用于創(chuàng)建柱圖的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;
                  }

                  
                  
          // 設(shè)定數(shù)據(jù)源
                  DefaultCategoryDataset dataset = new DefaultCategoryDataset();

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

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

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

                  
          // 頁面轉(zhuǎn)向
                  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開發(fā)

          評論

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

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

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

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

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

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

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

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

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

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

          # 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>  回復(fù)  更多評論   

          sitinspring(http://www.aygfsteel.com)原創(chuàng),轉(zhuǎn)載請注明出處.
          主站蜘蛛池模板: 尚志市| 凌源市| 南木林县| 江山市| 临澧县| 田东县| 徐闻县| 沈阳市| 香格里拉县| 贵德县| 卢湾区| 东乡| 潞城市| 乐陵市| 清镇市| 云南省| 洛川县| 梁河县| 康乐县| 建水县| 安宁市| 衡山县| 开鲁县| 稷山县| 富川| 黄冈市| 辽宁省| 琼中| 会昌县| 仁怀市| 垣曲县| 中山市| 酉阳| 黑山县| 黑水县| 肃宁县| 永修县| 浏阳市| 长寿区| 贺兰县| 灌南县|