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;
}
}