图形 中文 对应的数据类(例子中的)()在 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='<cewolf:imgurl chartid="foobar" renderer="/cewolf" width="100" height="100"/>'>
很明显,这种方式把图形包含到 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='<%= "#FFFFAA" %>'/>
<cewolf:param name="1" value='<%= "#AAFFAA" %>'/>
<cewolf:param name="2" value='<%= "#FFAAFF" %>'/>
<cewolf:param name="3" value='<%= "#FFAAAA" %>'/>
</cewolf:chartpostprocessor>
</cewolf:chart>
我们当然也可以在实现ChartPostProcessor 接口的类里把一切都做好,然后这么用:
<cewolf:chartpostprocessor id="dataColor"/>