cewolf學習筆記

來源:互聯網
上載者:User
cewolf學習筆記

1.匯入包
   :http://cewolf.sourceforge.net/new/index.html

  (1)匯入包 到 WEB-INF/lib下
    cewolf-1.0.jar 
    batik-*.jar 
    jcommon-1.0.0.jar
    jfreechart-1.0.jar
 
  (2)匯入標籤檔案到WEB-INF下
     cewolf.tld

2.配置web.xml檔案
  新增:
 <servlet>
    <servlet-name>CewolfServlet</servlet-name>
    <servlet-class>de.laures.cewolf.CewolfRenderer</servlet-class>
    <!-- sets storage implementation -->
    <init-param>
        <param-name>storage</param-name>
        <param-value>de.laures.cewolf.storage.TransientSessionStorage</param-value>
    </init-param>
     <!-- sets overlib.js location relative to webapp -->
    <init-param>
        <param-name>overliburl</param-name>
        <param-value>/etc/overlib.js</param-value>
    </init-param>
    <!-- turn on or off debugging logging -->
    <init-param>
        <param-name>debug</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>4</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>CewolfServlet</servlet-name>
    <url-pattern>/adChart/*</url-pattern>
  </servlet-mapping>

  3.寫類檔案
    類必須實現DatasetProducer介面
    例:
    package action;

    import java.io.Serializable;
    import java.util.Date;
    import java.util.Map;
    import org.jfree.data.category.DefaultIntervalCategoryDataset;
    import de.laures.cewolf.DatasetProduceException;
    import de.laures.cewolf.DatasetProducer;

    public class Tu implements DatasetProducer, Serializable{
        String categories[] = {"mon","tues","sun"};
        String seriesNames [] = {"show","click","ctr"};
           
        public String getProducerId() {           
            return "CategoryDataProducer";
        }
   
        public boolean hasExpired(Map arg0, Date arg1) {
       
            return true;
        }
   
        public Object produceDataset(Map arg0) throws DatasetProduceException {

            //以下是測試資料
            Number[][] datasets = new Number[3][3];

           
            datasets[0][0] = new Integer(201);
            datasets[0][1] = new Integer(2);
            datasets[0][2] = new Integer(3);
           
            datasets[1][0] = new Integer(11);
            datasets[1][1] = new Integer(22);
            datasets[1][2] = new Integer(33);
               
            datasets[2][0] = new Integer(44);
            datasets[2][1] = new Integer(55);
            datasets[2][2] = new Integer(66);           
             
             //參數1:橫軸 參數2:縱軸 
            DefaultIntervalCategoryDataset ds = new DefaultIntervalCategoryDataset(
                    categories,seriesNames,  datasets,datasets);
            return ds;
        }  
    }

4.寫JSP檔案
  以下是個柱狀圖:

    <%@ page language="java" pageEncoding="UTF-8" import="yicha.tool.IpList"%>
    <%@taglib uri='/WEB-INF/cewolf.tld' prefix='cewolf' %>
    <html>
          <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>test</title>
      </head>
    <body>
      <%
        action.Tu tu = new action.Tu();
        pageContext.setAttribute("data1",tu);
      %>

     <cewolf:chart id="pageChart2" title="日期柱狀圖" type="stackedHorizontalBar"     xaxislabel="時間" yaxislabel="數量">
        <cewolf:data>
        <cewolf:producer id="data1" />
        </cewolf:data>
    </cewolf:chart>
    <cewolf:img chartid="pageChart2" renderer="/adChart" width="500" height="500"/>

    </body>
    </html>

5.網上的一些資料

    圖形                      中文                  對應的資料類(例子中的)()在 public Object produceDataset(Map params)中返回
    ——————————————————————————————
    area                      面積圖,               TimeSeriesCollection(new TimeSeries("title", Month.class));
    areaxy                    面積XY圖              new DefaultIntervalCategoryDataset(seriesNames, categories, startValues, endValues)
    horizontalbar             水平柱條              new DefaultIntervalCategoryDataset(seriesNames, categories, startValues, endValues);
    horizontalbar3d           3D水平柱條            DefaultIntervalCategoryDataset(seriesNames, categories, startValues, endValues);
    line                      折線圖                DefaultIntervalCategoryDataset(seriesNames, categories, startValues, endValues);
                            DefaultCategoryDataset;

    pie                       餅圖                  new DefaultPieDataset();
    scatter                   XY散佈圖
    stackedhorizontalbar      管狀水平柱圖          DefaultIntervalCategoryDataset(seriesNames, categories, startValues, endValues);
    stackedverticalbar,       管狀垂直柱圖          DefaultIntervalCategoryDataset(seriesNames, categories, startValues, endValues);
    stackedverticalbar3d      3D管狀垂直柱圖        DefaultIntervalCategoryDataset(seriesNames, categories, startValues, endValues);
    timeseries                時間順序圖表            new TimeSeries("title", Month.class);
    verticalbar               垂直柱條圖            DefaultIntervalCategoryDataset(seriesNames, categories, startValues, endValues); 
    verticalbar3d             3D垂直柱條圖          DefaultIntervalCategoryDataset(seriesNames, categories, startValues, endValues);
    xy, ??                    XY散佈圖              XYSeriesCollection(new XYSeries("Example XY Dataset")
    candlestick               股價圖                DefaultHighLowDataset;
    highlow                   高低數值圖            new DefaultHighLowDataset("Laures, Inc.", dates, high, low, open, close, volume) 
    gantt,                    岡特圖                new TaskSeriesCollection()
    wind, ??
    signal                    訊號圖                SubSeriesDataset(TimeSeriesCollection(new TimeSeries()), int index);
    verticalxybar             垂直柱狀數值圖        TimeSeriesCollection(new TimeSeries());
    pie3d                     3D餅圖                同餅圖

6.日期折線圖樣本(timeseries)
     public class AdDateLineDataset implements DatasetProducer, Serializable {
        private Number[] data;

        private Date[] dateCategories;

        public AdDateLineDataset(Date[] d, Number[] a) {
            data = a;
            dateCategories = d;
        }

        public Object produceDataset(Map params) {

            TimeSeries ts1 = new TimeSeries(title, org.jfree.data.time.Day.class);

            for (int i = 0; i < data.length; i++) {
            ts1.add(new org.jfree.data.time.Day(dateCategories[i]),    data[i]);
            }

            TimeSeriesCollection collect = new TimeSeriesCollection(ts1);

            return collect;
        }

        public String getProducerId() {
            return "TimeDataProducer";
        }

        public boolean hasExpired(Map params, Date since) {
            return true;
        }
        }

7.餅狀圖樣本(pie)
  public class AdPieDataset implements DatasetProducer, Serializable {
        private Object data;
   
        final String[] categories = { "Docomo", "AU", "Softbank"};

        public AdPieDataset(Object obj) {
            data = obj;
        }

        public Object produceDataset(Map params) {
            DefaultPieDataset ds = new DefaultPieDataset();
            int[] iData;
            double[] dData;
            if (data instanceof int[]) {
                iData = (int[]) data;
                for (int i = 0; i < iData.length; i++) {
                    ds.setValue(categories[i], new Integer(iData[i]));
                    System.out.println("pvi:" + i + "=" + iData[i]);
                }
            }else if (data instanceof double[]) {
                dData = (double[]) data;
                for (int i = 0; i < dData.length; i++) {
                    ds.setValue(categories[i], new Double(dData[i]));
                    System.out.println("pvd:" + i + "=" + dData[i]);
                }
            }
            return ds;
        }

        public String getProducerId() {
            return "adunion_PieDataProducer";
        }

        /**
         * 50秒到期
         */
        public boolean hasExpired(Map params, Date since) {
            return (System.currentTimeMillis() - since.getTime()) > 50000;
        }
    }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.