[返回]
中国计算机报2000年第88期

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 = monthidresultindex3 +(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

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