Free vs. Version 3。免费版本的功能已经非常强大了,让我爱不释手。基于XML数据格式。对代码稍稍加工一下,让数据以XML格式做为参数传递就可以得到FLASH图表呈现。有单一系列(Single series)呈现,也有多样系列(Multi-series)呈现。有3D或2D的栏状、饼形、块形或线形呈现。甚至可以线形与栏状综合呈现,眼花缭乱……
这个图表库下载后解开压缩包,内有详细的文档和支持库与样式库。要创建自己的图表,必须要加载JSClass目录下的FusionCharts.js库。可以在Code目录下寻找自己想要的动态语言支持库。这些支持库提供通过传递参数后呈现FLASH图表的函数,十分重要。
使用ASP动态脚本语言,要在脚本里包含Code\ASP\Includes\FusionCharts.asp文件。假设已经把文件复制到自己站点的inc目录里,应该这样包含:
<!–#include file=”inc/FusionCharts.asp”–>
当然还要加载JSClass\FusinCharts.js文件。假设已经把文件复制到自己站点的js目录里,应该这样加载:
<script language=”JavaScript” src=”js/FusionCharts.js” ></script>
要呈现一个3D饼形的图表,就要在Charts目录里找到FCF_Pie3D.swf文件,假设已经把文件复制到自己站点的charts里。这个3D饼形图表接受的XML格式数据形式可以在Gallery\Data\目录里查看Pie3D.xml文件。格式很简单,这是我看过的众多图表工具里XML格式最简单最明了的了。
再在DOM里放个<div id=”mychart”></div>元素,图表将在这个元素里呈现出来。
接下来就是从数据库里提取记录,将记录转换成Pie3D.xml中那样的格式的字符串,然后调用FusionCharts.asp里的renderChart过程,使图表按数据库的实际数据呈现出来。
假设已经得到数据库记录集对象mconn。对象是“名称”和“数量”的一组二维数据表。用这样的代码来转换成XML格式:
<%
dim xmlstr ‘定义xml格式字符串变量
xmlstr=”<graph showNames=’1′
decimalPrecision=’0′ >” ’参照饼形xml格式的首行
mconn.movefirst ‘数据集指针指向首行
do
while not mconn.eof ’对数据集进行遍历,直到数据集最尾行
xmlstr=xmlstr & “<set name=’”
& mconn(”名称”) & “‘ value=’” & mconn(”数量”) & “‘ />”
‘当前行的记录按饼形xml格式进行转换
mconn.movenext ‘数据集指针指向下一行
loop
xmlstr=xmlstr
& “</graph>” ’参照饼形xml格式的尾行
‘目前得到xmlstr变量。调用renderChar过程,将变量传递过去。生成图表。
Call renderChart(”charts/FCF_Pie3D.swf”, “”, xmlstr , “mychart”, 600, 400)
‘过程有6个参数:chartSWF, strURL, strXML, chartId, chartWidth, chartHeight。
‘第1个参数是指定饼形样式的flash文件所在路径,这里是charts/FCF_Pie3D.swf。
‘第2个参数是指定xml数据文件的所在路径,这里就不必了,因为是直接传XML格式变量,所以是空的。
‘第3个参数是传给XML格式变最,这里是xmlstr,就是刚刚从数据集对象生成的变量。第2参数和第3参数不能同时有值,不然过程就不知道要取文件数据还是取变量数据了。
‘第4个参数是告诉过程将在哪个div元素里呈现图表。这里是mychart。
‘第5和第6个参数是指定图表的宽度和高度。
%>
脚本一运行,图表就呈现出来,而且还有出场动画和自动计算百分比。认真看一看文档,还可以指定饼形中每一数据项的颜色等等参数。
要呈现其它样式的图表,要分析该图表接受的XML格式,并创建出变量传递过去就行了。当然还要更换对应图表的flash文件。
XML数据可以是文件数据也可以是变量数据。加载文件数据不一定是.xml文件,可以是处理脚本,如asp或php。处理脚本可以接受get传来的值,处理好数据后按xml格式print出来就可以。不过经过我测试,脚本文件数据并不好用,经常数据更新后不能立即在图表上体现,往往需要清除浏览器缓存后才能生效。我并没有做过用脚本生成真正的.xml数据文件的测试,太麻烦。直接传变量很省事……
Austin Liu 刘恒辉
Project Manager and Software Designer E-Mail:lzhdim@163.com Blog:https://lzhdim.cnblogs.com 欢迎收藏和转载此博客中的博文,但是请注明出处,给笔者一个与大家交流的空间。谢谢大家。 |