waysun一路陽光

          不輕易服輸,不輕言放棄.--心是夢的舞臺,心有多大,舞臺有多大。踏踏實實做事,認認真真做人。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
            167 隨筆 :: 1 文章 :: 64 評論 :: 0 Trackbacks
          因為我所在的項目需要用到動態生成顯示圖片,于是研究了一點,先把源代碼以及完整的例子貼出來。
          (1)畫柱狀圖
          JAVA源代碼:

          /**
          *@author qingbao-gao
          *<p>Blog:http://www.cnweblog.com/nm1504</p>
          *<p>E-mail:yyk1504@163.com</p>
          *<p>創建時間:2008-1-3</p>
          *<p>Copyright: XXxxxXX (c)2008-1-3</p>
          */
          package com.mfsoft.net.jfreemap;

          import org.jfree.chart.ChartFactory;
          import org.jfree.chart.JFreeChart;
          import org.jfree.chart.plot.PlotOrientation;
          import org.jfree.data.category.DefaultCategoryDataset;

          import java.awt.Color;
          import org.jfree.chart.renderer.category.BarRenderer3D;
          import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
          import org.jfree.chart.axis.CategoryAxis;
          import org.jfree.chart.plot.CategoryPlot;

          import com.mfsoft.credit.modelmang.operation.EvalItemDataOperation;
          import com.mfsoft.credit.modelmang.operation.ModelDataTypeOperation;
          import com.mfsoft.net.pre.MoveWeightAverage;
          import com.mfsoft.net.pre.TimeSeriesForecast;

          public class DisplayMap
          {
           public DisplayMap()
           {
            
           }
           /**
            * <P>獲得圖形</P>
            * @param test           數據存儲數組
            * @param polyLineResult 柱狀圖要顯示的柱形
            * @param simuResult     柱狀圖要顯示的柱形
            * @param moveResult     柱狀圖要顯示的柱形
            * @param timeResult     柱狀圖要顯示的柱形
            * @author qingbao-gao
            * <p>Date:2008-01-03 PM 2:21</p>
            * @return               JFreeChart形式的對象供調用
            */

           public static JFreeChart displayResult(double[][]test,int polyLineResult,int simuResult,int moveResult,int timeResult)
           {
            int length=test.length;
              DefaultCategoryDataset dataset    = new DefaultCategoryDataset();
              //double [][]test=mdt.getMonthData("200609","200708","1100000000023","R");
              /*
                double[][]test=new double[][]{
                  {200606 ,63534},
                  {200607 ,64624},
                  {200608 ,64947},
                  {200609 ,64996},
                  {200610 ,65201},
                  {200611 ,65318},
                  {200612 ,65800},
                  {200701 ,66126},
                  {200702 ,66238},
                  {200703 ,66553},
                  {200704 ,66790},
                  {200705 ,67125},
                  {200706 ,67461},
                  {200707 ,67833},
                  {200708 ,68064},
                  {200709 ,68329},
                   };*/
                 //int taps=4;
                  for(int i=0;i<test.length-1;i++)
                  {
               dataset.addValue(test[i][1], "各月份數據", (String.valueOf(test[i][0])).substring(2, 7));
               //dataset.addValue(450, "各月份數據", "2月份");
               //dataset.addValue(550, "各月份數據", "3月份");
               //dataset.addValue(600, "各月份數據", "4月份");
                  }
                  EvalItemDataOperation ei=new EvalItemDataOperation();
                  String nextMonth=ei.getNextMonth(String.valueOf(test[length-1][0]));
                 dataset.addValue(simuResult, "神經網絡預測", nextMonth);
                 dataset.addValue(timeResult, "時間序列預測", nextMonth);
                 dataset.addValue(moveResult, "移動加權平均", nextMonth);
                 dataset.addValue(polyLineResult, "曲線擬合預測", nextMonth);
             
               JFreeChart chart = ChartFactory.createBarChart3D("時間序列柱狀圖-四種預測方法比較","預測顯示比較","實際客
          戶數與預測客戶數",dataset,PlotOrientation.VERTICAL,true,false,false);
              chart.setBackgroundPaint(Color.WHITE);
              CategoryPlot catePlot = chart.getCategoryPlot();

              CategoryAxis domainAxis = catePlot.getDomainAxis();
                    //domainAxis.setVerticalCategoryLabels(false);
              catePlot.setDomainAxis(domainAxis);

                    BarRenderer3D renderer = new BarRenderer3D();
                    renderer.setBaseOutlinePaint(Color.BLACK);

                    //設置每個地區所包含的平行柱的之間距離
                    renderer.setItemMargin(0.1);
                    //顯示每個柱的數值,并修改該數值的字體屬性
                    renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
                    renderer.setItemLabelsVisible(true);
                    catePlot.setRenderer(renderer);
                    //設置柱的透明度
                    catePlot.setForegroundAlpha(0.8f);
                    return chart;
           }

          }

          下面是JSP里調用上面的類實現圖片顯示的JSP文件
          <%@page contentType="text/html; charset=GB2312"%>
          <%@page import="org.jfree.chart.ChartUtilities"%>
          <%@page import="org.jfree.chart.JFreeChart"%>
          <%@page import="com.mfsoft.net.jfreemap.DisplayMap" %>
          <%@page contentType="text/html; charset=GB2312"%>
          <%@page import="com.mfsoft.credit.modelmang.operation.EvalItemDataOperation" %>
          <%@page import="com.mfsoft.net.jfreemap.*" %>
          <%@page import="com.mfsoft.credit.modelmang.operation.ModelDataTypeOperation" %>

          <html>
          <head>
          <title>柱狀圖顯示結果</title>
          </head>
          <body>
          <%

           String timeType=(String)request.getParameter("timeType");
           String areaid=(String)request.getParameter("areaid");
           String areaType=(String)request.getParameter("areaType");
           String endTime=EvalItemDataOperation.getEndYearsToday();
           String startTime=EvalItemDataOperation.getNYearsToday(endTime,1);
           int lineScore=55000;
           int nnetScore=45632;
           int timeScore=50000;
           int moveWeightScore=60000;
           nnetScore=Integer.valueOf((String)request.getParameter("nnetScore"));
           lineScore=Integer.valueOf((String)request.getParameter("lineScore"));
           timeScore=Integer.valueOf((String)request.getParameter("timeScore"));
           moveWeightScore=Integer.valueOf((String)request.getParameter("moveWeightScore"));
              MoveWeightLineMap mp=new MoveWeightLineMap();
              double[][]st={{}};
              if(timeType!=null&&areaid!=null&&areaType!=null)
              {
                  if(timeType.equals("0"))
                  {
                      st=ModelDataTypeOperation.getMonthData(startTime,endTime,areaid,areaType);
                  }
                  else
                  if(timeType.equals("1"))
                  {
                      st=ModelDataTypeOperation.getThirdYearData(startTime,endTime,areaid,areaType);
                  }
                  else
                  if(timeType.equals("2"))
                  {
                      st=ModelDataTypeOperation.getHalfYearData(startTime,endTime,areaid,areaType);
                  }
                  else
                  {
                      st=ModelDataTypeOperation.getYearData(startTime,endTime,areaid,areaType);
                  }
               DisplayMap dm=new DisplayMap();
               JFreeChart chart=dm.displayResult(st,lineScore, nnetScore, moveWeightScore, timeScore);
               ChartUtilities.writeChartAsJPEG(response.getOutputStream(),chart,1000,600);
              }
              else
              {
                   out.print("傳遞過來的值為空,不能顯示柱狀圖");
              }
          %>
          </body>
          </html>

          posted on 2008-06-20 08:52 weesun一米陽光 閱讀(2046) 評論(2)  編輯  收藏 所屬分類: 總結備用

          評論

          # re: JfreeChar實現JSP頁面繪圖以及圖片顯示【原創】 2012-10-15 21:51 卞曉晨
          import com.mfsoft.credit.modelmang.operation.EvalItemDataOperation;
          import com.mfsoft.credit.modelmang.operation.ModelDataTypeOperation;
          import com.mfsoft.net.pre.MoveWeightAverage;
          import com.mfsoft.net.pre.TimeSeriesForecast;



          這些包如何找到?  回復  更多評論
            

          # re: JfreeChar實現JSP頁面繪圖以及圖片顯示【原創】 2012-10-16 09:41 waysun
          自定義的類@卞曉晨
            回復  更多評論
            

          主站蜘蛛池模板: 云南省| 木兰县| 永嘉县| 广东省| 年辖:市辖区| 松桃| 衡水市| 承德市| 六安市| 洪洞县| 申扎县| 定日县| 曲靖市| 浏阳市| 门头沟区| 白水县| 濮阳县| 游戏| 浮梁县| 古浪县| 济源市| 安新县| 太湖县| 韩城市| 盐山县| 曲阜市| 永济市| 平湖市| 乐安县| 舞钢市| 景泰县| 正宁县| 尼勒克县| 塘沽区| 巧家县| 新龙县| 兴山县| 田阳县| 永安市| 化隆| 礼泉县|