当前位置: 代码迷 >> Web前端 >> cewolf 懂得(1)
  详细解决方案

cewolf 懂得(1)

热度:635   发布时间:2012-10-11 10:16:10.0
cewolf 了解(1)
图形                      中文                  对应的数据类(例子中的)()在 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饼图                同饼图


------------------------------------------------
注:也可以在标签cewolf文件中找到相应的图象说明


---------------------------------------------------
实例:
一、cewolf 产生图形的流程
   创建一个数据源(dataset)来包含将要在图形中显示的数据?????>><cewolf:chart/>标签对图形进行调整
   ??????>><cewolf:img/>标签把图形输出
1、创建一个数据源(dataset)
   创建数据源基本上和上面一样,所不同的是 cewolf 对其重新进行了包装,它提供了一个DatasetProducer 接口,你需要
   实现这一接口,下面是一个例子
  DatasetProducer timeData = new DatasetProducer() {
    public Object produceDataset(Map params) {  //cewolf 对其重新进行了包装
      TimeSeries ts = new TimeSeries("Cewolf Release Schedule", Month.class);//怎么样?和上面一样吧
      ts.add(new Month(7, 2002), 0.1);
      ts.add(new Month(8, 2002), 0.4);
      ts.add(new Month(9, 2002), 0.9);
      ts.add(new Month(10, 2002), 1.0);
      return new TimeSeriesCollection(ts);
    }
    public String getProducerId() {  //返回唯一的ID
      return "TimeDataProducer";
    }
    public boolean hasExpired(Map params, Date since) { //默认就好
      return false;
    }
  };
  pageContext.setAttribute("timeData", timeData); //产生完以后要把它放到页面中保存以给 cewolf标签调用
2、<cewolf:chart/>标签
  <cewolf:chart id="timeChart"     //这个id要唯一,给下边<cewolf:img/>标签引用
                title="TimeSeries"  //图形的标题
                type="timeseries"   //图形的类型
                xaxislabel="x-values"    //横轴 Lable
                yaxislabel="y-values">   //纵轴Lable
    <cewolf:colorpaint color="#EEEEFF"/>  //图形的背景色
    <cewolf:data>
        <cewolf:producer id="timeData"/>  //引用上面产生的数据
    </cewolf:data>
  </cewolf:chart>
  一些说明:
  关于图形的背景色,还有两个选择,分别是
    <cewolf:gradientpaint>   //产生色彩倾斜的背景
        <cewolf:point x="0" y="0" color="#AAAAFFEE" />
        <cewolf:point x="300" y="0" color="#DDDDFF" />
    </cewolf:gradientpaint>
  和
    <cewolf:texturepaint image="/img/bg.jpg" width="60" height="60" /> //加入背景图案
3、<cewolf:img/>标签
   <cewolf:img chartid="timeChart"   //就是上面那个 id
               renderer="/cewolf"    //这个是必需的!web.xml 中有配置
               width="300"         //宽
               height="300" />      //高
   还有一种图形输出方式:
  <img src=&apos;<cewolf:imgurl chartid="foobar" renderer="/cewolf" width="100" height="100"/>&apos;>
  很明显,这种方式把图形包含到 Html 的<img/>中
4、进一步调整
   看到上面的步骤,你可能会认为用 cewolf 输出图形是如此的简单,是这样的,但看了最开始的 jFreeChart 对图形
   的一些调整,你会想我如何调整呢?我不想用默认值,我想输出更复杂的图形。很好,我是这样做的:
   这里要介绍一个新的接口ChartPostProcessor  和一个标签<cewolf:chartpostprocessor/>
   我们要写自己的类实现这个ChartPostProcessor 接口,然后再用标签<cewolf:chartpostprocessor/>调用我们所写
   的类
  ChartPostProcessor dataColor = new ChartPostProcessor() {
    public void processChart(Object chart, Map params) {  //这个接口就这一个方法
      CategoryPlot plot = (CategoryPlot) ((JFreeChart) chart).getPlot(); //看到了什么??!!对,获得了plot!
                                                                 下面就可以通过plot 对图形进行调整!!         
      plot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D));  //一个实验,坐标轴与图分离
      for (int i = 0; i < params.size(); i++) {   //这里的params 是通过标签<cewolf:chartpostprocessor/>输入的!
        String colorStr = (String) params.get(String.valueOf(i));
        plot.getRenderer().setSeriesPaint(i, java.awt.Color.decode(colorStr));//看到 renderer了吧,又可以大
                                                                                干一场了,嘿嘿!
      }
    }
  };
  pageContext.setAttribute("dataColor", dataColor); //记得要放起来噢
  具体引用:
<cewolf:chart id="stackedHorizontalBar" title="StackedHorizontalBar"
              type="stackedHorizontalBar" xaxislabel="Fruit" yaxislabel="favorite">
    <cewolf:data>
        <cewolf:producer id="categoryData" />
    </cewolf:data>
    <cewolf:chartpostprocessor id="dataColor">   //在这里!!
        <cewolf:param name="0" value=&apos;<%= "#FFFFAA" %>&apos;/>
        <cewolf:param name="1" value=&apos;<%= "#AAFFAA" %>&apos;/>
        <cewolf:param name="2" value=&apos;<%= "#FFAAFF" %>&apos;/>
        <cewolf:param name="3" value=&apos;<%= "#FFAAAA" %>&apos;/>
    </cewolf:chartpostprocessor>
</cewolf:chart> 
我们当然也可以在实现ChartPostProcessor 接口的类里把一切都做好,然后这么用:
    <cewolf:chartpostprocessor id="dataColor"/>