asp脚本利用组件输出统计图形
王文军
随着internet/intranet技术的兴起,服务器/浏览器架构解决方案在越来越多的领域得到应用。以网站的方式,应用户不同要求对有关数据做出统计,动态输出各种统计图,是这类解决方案的一个难点。
本文讨论以微软iis/pws为web server的一种动态输出各种统计图形的具体解决方法。
我们知道,微软iis/pws中实现动态网页最常用的技术是开发asp脚本,对vbscript或jscript编程,利用内置或第三方组件对数据库或其它数据进行访问,依据结果产生动态网页,发送到客户端,由浏览器解释显示结果,显示结果一般是表格形式。但如果采用统计图形(柱状图、折线图、饼图等)方式输出结果,则不能直接生成网页,而要把结果提交给可以输出图形的组件,再由组件完成图形输出。此类组件软件市场上很多,也可以自行开发。本文将介绍目前较好的统计图输出专用组件:teechart pro。
teechart pro功能强大,这里仅介绍其作为asp组件在服务器端输出统计图形文件一种功能。
teechart pro组件在服务器端输出统计图形文件的设计思路是:首先通过初始化确定图形大小、背景和坐标提示;然后把统计数据按系列组织起来,一组数据对应一个系列,该组件将自动以柱状图或饼图等多种形式(可以指定)输出这些数据;最后调用相应的方法(成员函数)在服务器上形成指定的图形文件。
下面具体介绍该组件的开发使用方法:
首先,创建一个teechart组件对象,我们命名为curchart:
dim curchart
set curchart=server.createobject("teechart.tchart")
然后对该对象的有关属性进行初始化,设置标题、坐标提示和图形大小及背景:
curchart.removeallseries
' 设置输出图形大小
curchart.width = 600
curchart.height = 310
' 设置总标题
curchart.header.text.clear
curchart.header.text.add("统计结果")
curchart.header.font.color=rgb(255,0,0)
curchart.header.font.size=12
' 设置横坐标标题
curchart.footer.text.clear
curchart.footer.text.add("预 报 时 效 (月)")
curchart.footer.font.color=rgb(255,255,255)
curchart.footer.font.size=11
' 设置横坐标刻度
curchart.axis.bottom.labels.font.color=rgb(255,255,255)
curchart.axis.bottom.labels.font.bold=true
curchart.axis.bottom.labels.font.size=10
' 设置纵坐标标题
curchart.axis.left.title.caption="概 率 (%)"
curchart.axis.left.title.font.color=rgb(255,255,0)
curchart.axis.left.title.font.size=11
' 设置纵坐标刻度
curchart.axis.left.labels.font.color=rgb(255,255,0)
curchart.axis.left.labels.font.bold=true
curchart.axis.left.labels.font.size=10
' 指定各系列的提示位置
curchart.legend.alignment=1
' 设置图形背景
curchart.panel.gradient.visible=true
curchart.panel.gradient.startcolor=&&hee2922
curchart.panel.gradient.endcolor=&&hffff99
' 设置三维效果
curchart.walls.left.size=6
curchart.walls.bottom.size=6
curchart.aspect.chart3dpercent=30
curchart.aspect.view3d = true
至此,我们已经规定了坐标框架和图形基本面貌。下面对各系列进行逐一赋值,确定显示结果。示例代码如下:
dim result(5)
' 5种统计概率结果,对应5个系列
dim resulttext(5)
' 5种统计概率结果的提示字符串
resulttext(0) = "reep"
resulttext(1) = "logit2"
resulttext(2) = "判别"
resulttext(3) = "完全预报"
resulttext(4) = "综合"
charttype = 1 ' 输出柱状图
for resultindex=0 to 4
curchart.addseries(charttype)
' 增加一个系列数据
set result(resultindex)=curchart.series(resultindex)
result(resultindex).clear
' 获取第resultindex种统计方法今年前4月各月的概率结果,连同提示加入图表
for monthid=0 to 3
resultdata = monthidresultindex3 +(10-resultindex)5 ' 模拟数据
result(resultindex).add resultdata, (monthid+1)&&"月", &&hffffff
next
' 设置各系列的有关提示
result(resultindex) = resulttext(resultindex)
result(resultindex).coloreachpoint = false ' 自动设置各系列颜色
result(resultindex).marks.style = smsvalue ' 系列的提示方式
result(resultindex).marks.visible=false ' 不显示系列各值
next
接下来,就可以生成要求的统计图形文件并达到在网页中显示的目的:
' 把图形文件名转化成本地绝对路径表达方式
jpeglocalfile = server.mappath( "libcount.jpg" )
' 把制定的图形生成、存入本指定文件
curchart.export.savetojpegfile jpeglocalfile, false, jpegbestquality, 92,
curchart.width, curchart.height
' 在页面中显示该图形
response.write("〈img src=libcount.jpg〉")
最后,记得一定要释放创建的对象:
set curchart = nothing
本例的显示结果如图1所示。

图1
在开发过程中,我们还可利用该组件设计出更强大的统计图形。