FusionCharts是InfoSoft Global公司的一个产品,而FusionCharts Free则是FusionCharts提供的一个免费版本,虽然免费,功能依然强大,图形类型依然丰富。是一个跨平台,跨浏览器的flash图表组件解决方案,能够被 ASP、.NET, PHP, JSP, ColdFusion, Ruby on Rails, 简单 HTML 页面甚至PPT调用。我们不需要知道任何Flash的知识,只需要了解你所用的编程语言而已。
开发步骤:
1、拷贝FusionCharts文件到WebRoot目录下
2、在显示信息的页面引入所需的js文件
<script type="text/javascript" src="FusionCharts/Charts/FusionCharts.js"></script>
<script type="text/javascript" src="FusionCharts/Charts/FusionChartsExportComponent.js"></script>
3、将需要显示的对象转成JSON数据(在ListServlet中加入)
List<Person> listPage = pdi.listPage(currentPage, pageSize);
request.setAttribute("list", listPage);
JSONArray ja = new JSONArray();
for (int i = 0; i < listPage.size(); i++) {
JSONObject jo = new JSONObject();
jo.put("name", listPage.get(i).getName());// 把姓名放入对象
jo.put("salary", listPage.get(i).getSalary());// 把工资放入对象
ja.add(jo);// 添加进JSONArray
}
request.setAttribute("json", ja);// 把集合存储
4、在jsp显示图表的页面写入js代码
<script type="text/javascript">
//创建报表工具 写入你需要注入的模板 chartId:id唯一性 高度 宽度
var chart = new FusionCharts("FusionCharts/Charts/Column2D.swf","chartId111", "660", "420");
//数据加载来源,也可以直接是data.xml
//chart.setDataURL("data.xml");
//渲染 或者注入(展示的地方)
//chart.render("show");
//从model里面取json串
var ss = '${json}';
//alert(ss);
//解析json串 eval把json解析成数组
var list = eval(ss);
//存放的object类型 object就是json数据
//alert(list);
//因为FusionCharts需要的是xml的字符串,所以拼接
//yAxisMinValue 指定纵轴(Y轴)最小值,数字
//yAxisMaxValue 指定纵轴(Y轴)最大值,数字
//xaxisname 指横坐标轴(y轴)名称
//yaxisname 指纵坐标轴(y轴)名称
//FusionCharts 外部标签只认chart 和graph标签
//caption 标题
//chart 和graph
var charts="<chart caption='人事工资图' showBorder='1' yAxisMinValue='10' borderColor='#cfaec1' yAxisMaxValue='150' xaxisname='姓名' yaxisname='工资(元)'>";
for(var i = 0; i< list.length; i++){
charts+="<set name='"+list[i].name+"' value='"+list[i].salary+"'/> ";
}
charts+="</chart>";
//加载字符串 本来需要的是xml文件,现在必须拼装成xml文件
chart.setDataXML(charts);
chart.render("show");
</script>
更改显示图标页面的js代码,可以获得不同的图形效果
var chart = new FusionCharts("FusionCharts/Charts/Column2D.swf","chartId111", "660", "420");
改为
var chart = new FusionCharts("FusionCharts/Charts/Column3D.swf","chartId111", "660", "420");
显示结果为:
Pie2D.swf和Pie3D.swf(2d和3d的饼状图)
还有更多,这里就不一一举例了。