posts - 37, comments - 8, trackbacks - 0, articles - 0
          1、JFreeChart組件,用于圖形的開發(fā)。
              1)到http://www.jfree.org/jfreechart/下載JFreeChart的zip文件,解壓后得到的目錄的lib子目錄中的所有jar包拷貝到Web應(yīng)用的WEB-INF/lib目錄下,完成安裝。
              2)用JFreeChart創(chuàng)建Web圖形需要經(jīng)過3個步驟:
                  Œ創(chuàng)建一個包含要在Web圖形中顯示的數(shù)據(jù)的數(shù)據(jù)集對象。
                  ?創(chuàng)建一個用于作圖的JFreeChart對象。
                  ?向目標作圖。Web圖表的作圖目標為response.getOutputStream(),即response對象的輸出流。
              3)創(chuàng)建一個簡單的餅形圖:
          <%@ page contentType="text/html;charset=GB2312" %>
          <%@ page import="org.jfree.chart.JFreeChart,org.jfree.chart.ChartUtilities,
                      org.jfree.chart.ChartFactory,org.jfree.data.general.DefaultPieDataset" %>
          <%
          //第一步:創(chuàng)建一個包含要在Web圖形中顯示的數(shù)據(jù)的數(shù)據(jù)集對象
          /*顯示數(shù)據(jù)系列,也可以從數(shù)據(jù)庫讀取數(shù)據(jù),構(gòu)建數(shù)據(jù)集對象*/
          String interest[]=new String[]{"文學(xué)","相聲","編程","體育","音樂","歷史"};
          /*數(shù)據(jù)系列對應(yīng)的值*/
          int interestValue[]={88,73,98,67,56,66};
          /*餅形圖的數(shù)據(jù)對象集對象可以是實現(xiàn)了JFfreeChart組件中的PieDataset接口的類的實例,也可以使用JFreeChart組件中已有的已實現(xiàn)了此接口的DefaultPieDataset類,更方便和快捷。*/
          DefaultPieDataset pieDataset 
          = new DefaultPieDataset();
          for(int i=0;i<interest.length;i++)
                  pieDataset.setValue(interest[i],interestValue[i]);
          //第二步:創(chuàng)建一個用于作圖的JFreeChart對象
          /*ChartFactory是一個工廠類,可用于創(chuàng)建JFreeChart對象。這里使用的方法是createPieChart()方法,參數(shù)作了簡單的設(shè)置。還有別的方法。*/
          String titleString="我的愛好統(tǒng)計圖";//圖的標題
          JFreeChart chart 
          = ChartFactory.createPieChart(titleString,pieDataset,true,truetrue);
          //第三步:向目標作圖。 
          ChartUtilities.writeChartAsJPEG(response.getOutputStream(),chart,
          800,500);
          %>
              4)創(chuàng)建一個簡單的條形圖:
          <%@ page contentType="text/html;charset=GB2312" %>
          <%@ page import="org.jfree.chart.JFreeChart,org.jfree.chart.ChartUtilities,
                              org.jfree.chart.ChartFactory,
                              org.jfree.chart.plot.PlotOrientation,
                              org.jfree.data.category.DefaultCategoryDataset
          "
          %>
          <%
          /**
          *用JFreeChart創(chuàng)建條形圖需要用實現(xiàn)了CategoryDataset接口
          *或IntervalXYDataset接口的類的實例來作為數(shù)據(jù)集對象,
          *常用JFreeChart中自帶的已實現(xiàn)了CategoryDataset接口的DefaultCategoryDataset類。
          */
          //第一步:創(chuàng)建一個包含要在Web圖形中顯示的數(shù)據(jù)的數(shù)據(jù)集對象
          String dataName[]=new String[]{"文學(xué)","相聲","編程","體育","音樂","歷史"};//顯示數(shù)據(jù)系列
          int dataValueCount[]={88,73,98,67,56,66};//數(shù)據(jù)系列對應(yīng)的值
          //------創(chuàng)建數(shù)據(jù)集,并設(shè)置值------
          DefaultCategoryDataset categoryDataset 
          = new DefaultCategoryDataset();
          for(int i=0;i<dataName.length;i++)
                  categoryDataset.addValue(dataValueCount[i],dataName[i],dataName[i]);
          //第二步:創(chuàng)建一個用于作圖的JFreeChart對象
          String titleString="我的愛好統(tǒng)計圖";//圖的標題
          /**
          *createBarChart方法中的參數(shù)依次為圖形標題、分類軸標簽(默認為橫向)、
          *數(shù)值軸標簽(默認為縱向)、數(shù)據(jù)集、圖形顯示方向、是否顯示圖例、是否有工具條、是否有URL
          */
          JFreeChart chart 
          = ChartFactory.createBarChart(titleString,"愛好","愛它幾分",
                  categoryDataset,PlotOrientation.VERTICAL,
          true,true,false);
          //第三步:向目標作圖。
          ChartUtilities.writeChartAsJPEG(response.getOutputStream(),chart,
          500,300);
          %>
              注:條形圖的顯示也可以作一些定制性的修改,常用的修改方法:
                  Œ修改圖形的背景顏色:chart.setBackgroundPaint(new Color(#BBBBDD));
                  ?修改圖形的柱狀條顏色。需要使用setCategoryPlot()方法,它非JFreeChart類所有,需要先用JFreeChart類的實例的getCategoryPlot()方法得到一個CategoryPlot對象,再用CategoryPlot對象的getRenderer()方法得到一個BarRenderer對象,用此對象的setSeriesPaint()方法來設(shè)置柱狀條的顏色,如
          CategoryPlot plot=chart.getCategoryPlot();
          BarRenderer renderer
          =(BarRenderer)plot.getRenderer();
          renderer.setSeriesPaint(
          0,Color.red);
          renderer.setSeriesPaint(
          1,Color.yellow);
          renderer.setSeriesPaint(
          2,Color.green);
                  ?柱狀條的間距。JFreeChart允許修改類型軸的一些設(shè)置,如:
                      §第一條柱狀條與數(shù)值軸之間的空白間隔距。
                      §柱狀條之間的空白間距。
                      §最后一條柱狀條后空白距離。此三項的設(shè)置方法示例:
          CategoryPlot plot=chart.getCategoryPlot();
          CategoryAxis axis
          =plot.getDomainAxis();
          axis.setLowerMargin(
          0.01);//百分這二
          axis.setCategoryMargin(0.10);//百分之十
          axis.setUpperMargin(0.02);//百分之二
              5)創(chuàng)建線形圖:
          <%@ page contentType="text/html;charset=GB2312" %>
          <%@ page import="org.jfree.chart.JFreeChart,org.jfree.chart.ChartUtilities,
                          org.jfree.chart.ChartFactory,
                          org.jfree.chart.plot.PlotOrientation,
                          org.jfree.data.category.DefaultCategoryDataset
          "%>
          <%
          /**
          *JFreeChart創(chuàng)建線形圖使用的數(shù)據(jù)集可以是CategoryDataset接口
          *或XYDataset的實現(xiàn)類的實例。
          */

          //------數(shù)據(jù)線------
          String dataLine1="物理";
          String dataLine2
          ="化學(xué)";
          String dataLine3
          ="數(shù)學(xué)";
          //------數(shù)據(jù)列------
          String dataCol1="1";
          String dataCol2
          ="2";
          String dataCol3
          ="3";
          String dataCol4
          ="4";
          String dataCol5
          ="5";
          String dataCol6
          ="6";
          //------創(chuàng)建數(shù)據(jù)集,并設(shè)置值------
          DefaultCategoryDataset categoryDataset = new DefaultCategoryDataset();
          categoryDataset.addValue(
          60,dataLine1,dataCol1);
          categoryDataset.addValue(
          70,dataLine1,dataCol2);
          categoryDataset.addValue(
          83,dataLine1,dataCol3);
          categoryDataset.addValue(
          90,dataLine1,dataCol4);
          categoryDataset.addValue(
          92,dataLine1,dataCol5);
          categoryDataset.addValue(
          85,dataLine1,dataCol6);
          categoryDataset.addValue(
          63,dataLine2,dataCol1);
          categoryDataset.addValue(
          45,dataLine2,dataCol2);
          categoryDataset.addValue(
          67,dataLine2,dataCol3);
          categoryDataset.addValue(
          76,dataLine2,dataCol4);
          categoryDataset.addValue(
          90,dataLine2,dataCol5);
          categoryDataset.addValue(
          87,dataLine2,dataCol6);
          categoryDataset.addValue(
          50,dataLine3,dataCol1);
          categoryDataset.addValue(
          76,dataLine3,dataCol2);
          categoryDataset.addValue(
          84,dataLine3,dataCol3);
          categoryDataset.addValue(
          96,dataLine3,dataCol4);
          categoryDataset.addValue(
          88,dataLine3,dataCol5);
          categoryDataset.addValue(
          80,dataLine3,dataCol6);
          //------創(chuàng)建線圖------
          String titleString="XXXXXX學(xué)生成績線圖";//圖的標題
          JFreeChart chart = ChartFactory.createLineChart(titleString,"第幾次考試","成績",
              categoryDataset,PlotOrientation.VERTICAL,
          true,true,false);
          ChartUtilities.writeChartAsJPEG(response.getOutputStream(),chart,
          500,300);
          %>
              6)JFreeChart中常用的幾個包:
              Œorg.jfree.chart:這個包包含了JFreeChart最為重要的也是為常用的幾個類和接口。
              ?org.jfree.chart.data:數(shù)據(jù)集相關(guān)的接口和類。
              ?org.jfree.chart.plot:繪圖相關(guān)的類和接口。
              ?org.jfree.chart.data.general:常用的數(shù)據(jù)集相關(guān)的接口和類。
              7)開發(fā)中最為常用的幾個類或接口:
              ŒJFreeChart類。這個類在org.jfree.chart包中,用于協(xié)調(diào)整個畫圖的處理過程。生成這個類通常使用ChartFactory類。它的主要方法有:public void draw(Graphics2D g2,Rectang2D area)此方法用于在圖形設(shè)備的特定區(qū)域畫圖。參數(shù)g2代表一個圖形,area為包容這個圖形的矩形容器。java中提供的圖形設(shè)備有:屏幕、打印機、圖形緩沖區(qū)。JFreeChart繪圖是由不同的java.awt.Graphics2D包中的抽象類實現(xiàn)的,只有利用它們,JFreeChart才能向不同的圖形設(shè)備輸出圖形。
              ?ChartFactory類。這是一個工廠類,即org.jfree.chart.ChartFactory,它提供了一些比較方便的創(chuàng)建圖形對象的方法。此類常用的方法有:public static JFreeChart createPieChart(String title,PieDataset dataset,boolean legend,boolean tooltips,boolean urls),此方法用于創(chuàng)建一個標準的餅圖。title是標題;dataset是創(chuàng)建餅形圖所使用的特定數(shù)據(jù)集(可為空);legend表示是否為一個圖例;tooltips用于配置圖形是否生成提示信息;urls配置圖形是否生成URL。public static JFreeChart createBarChart(String title,String categoryAxisLabel,String tvalueAxisLabbel,CategoryDataset dataset,PlotOrientation orientation,boolean legend,boolean tooltips,boolean urls)此方法用于生成條形圖。public static JFreeChart createLineChart(String title,String categoryAxisLabel,String valueAxisLabel,CategoryDataset dataset,PlotOrientation orientation,boolean legend,boolean tooltips,boolean urls),其中categoryAxisLabel指出橫向軸(分類軸)的提示字符串,valueAxisLabel指出橫向軸(值軸)的提示字符串,orientation指出條形圖為橫向還是豎向。
              ?ChartUtilities類。它在org.jfree.chart包中,能過可從chart對象生成PNG格式或JPEG格式的圖片,也可生成帶有點擊范圍的HTML圖片,這些方法都是表態(tài)是靜態(tài)的。
              writeChartAsPNG(java.io.OutputStream out, JFreeChart chart, int width, int height) throws java.io.IOException
              writeChartAsJPEG(java.io.OutputStream out, JFreeChart chart, int width, int height) throws java.io.IOException
              writeChartAsJPEG(java.io.OutputStream out, JFreeChart chart, int width, int height, ChartRenderingInfo info) throws java.io.IOException
              ?PlotOrientaion類,它在包中,用于表示圖形的顯示方向,主要有兩屬性:public static final PlotOrientation HORIZONTAL(橫向)與public static final PlotOrientation VERTICAL(縱向)。
              DefaultCategoryDataset接口,它在org.jfree.data.category 包中,這是一個默認情況下的使用的分類數(shù)據(jù)集接口。構(gòu)造函數(shù):public DefaultCategoryDataset()生成個空的數(shù)據(jù)集。
              addValue(double value, java.lang.Comparable rowKey, java.lang.Comparable columnKey) 
              setValue(double value, java.lang.Comparable rowKey, java.lang.Comparable columnKey) 
          兩者功能相同,向數(shù)據(jù)中增加值,如果這個數(shù)據(jù)已存在則覆蓋它。
              
          主站蜘蛛池模板: 朝阳市| 衡山县| 六枝特区| 兴山县| 义乌市| 马尔康县| 大悟县| 桐梓县| 高阳县| 大田县| 墨竹工卡县| 东乡县| 汤原县| 老河口市| 清远市| 沙坪坝区| 遂宁市| 岳阳县| 铜山县| 保定市| 平武县| 溧阳市| 姚安县| 虹口区| 桃园市| 都昌县| 云龙县| 方城县| 金坛市| 察雅县| 永新县| 聂拉木县| 翼城县| 惠东县| 观塘区| 海阳市| 铜鼓县| 鄱阳县| 宁海县| 开鲁县| 塔城市|