有时间大家也学学:http://lydsgw.com/fyw/ 教程)
此程序只能用IE浏览器浏览,根据下面的源程序,我们只是略做修改结合数据库就能实际应用到一些系统中。
示例:1、直方图 2、饼图 3、曲线图
一、统计图--直方图
<
%
'
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
'
┃ ┃
'
┃ 摘 要: 统计图--直方图 ┃
'
┃ 作 者: 翁云兵 ┃
'
┃ 创建日期:2004年11月5日 ┃
'
┃ 完成日期:2004年11月5日 ┃
'
┃ ┃
'
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
'
参数含义(数组,横坐标,纵坐标,图表的宽度,图表的高度,图表标题,X轴单位,Y轴单位)
function
table1(stat_array,table_left,table_top,all_width,all_height,table_title,X_unit,Y_unit)
dim
bg_color(
10
)
bg_color(
1
)
=
"
#ff1919"
bg_color(
2
)
=
"
#ffff19"
bg_color(
3
)
=
"
#1919ff"
bg_color(
4
)
=
"
#19ff19"
bg_color(
5
)
=
"
#fc0"
bg_color(
6
)
=
"
#3cc"
bg_color(
7
)
=
"
#ff19ff"
bg_color(
8
)
=
"
#993300"
bg_color(
9
)
=
"
#f60"
bg_color(
10
)
=
"
#ff8c19"
if
X_unit
<>
""
then
X_unit
=
X_unit
end
if
if
Y_unit
<>
""
then
Y_unit
=
Y_unit
end
if
![None.gif](/Images/OutliningIndicators/None.gif)
num
=
ubound
(stat_array,
1
)
item_width
=
cint
(
20000
/
num
+
0.5
)
begin_x
=
cint
((item_width
-
1200
)
/
2
)
+
2200
![None.gif](/Images/OutliningIndicators/None.gif)
value_Max
=
0
for
i
=
1
to
num
if
value_Max
<
stat_array(i,
1
)
then
value_Max
=
stat_array(i,
1
)
next
value_Max
=
cint
(value_Max)
value_Max_str
=
cstr
(value_Max)
if
value_Max
>
9
then
temp
=
mid
(value_Max_str,
2
,
1
)
if
temp
>
4
then
temp2
=
(
int
(value_Max
/
(
10
^
(
len
(value_Max_str)
-
1
)))
+
1
)
*
10
^
(
len
(value_Max_str)
-
1
)
else
temp2
=
(
int
(value_Max
/
(
10
^
(
len
(value_Max_str)
-
1
)))
+
0.5
)
*
10
^
(
len
(value_Max_str)
-
1
)
end
if
else
if
value_Max
>
4
then
temp2
=
10
else
temp2
=
5
end
if
item_hight
=
temp2
/
5
![None.gif](/Images/OutliningIndicators/None.gif)
response.Write
"
<v:shapetype id='Box' coordsize='21600,21600' o:spt='16' adj='5400'></v:shapetype>"
response.Write
"
<v:rect id='background' style='position:absolute;left:
"
&
table_left
&
"
px;top:
"
&
table_top
&
"
px;WIDTH:
"
&
all_width
&
"
px;HEIGHT:
"
&
all_height
&
"
px;' fillcolor='#EFEFEF' strokecolor='gray'>"
response.Write
"
<v:shadow on='t' type='single' color='silver' offset='4pt,4pt'/>"
response.Write
"
</v:rect>"
response.Write
"
<v:group ID='table' style='position:absolute;left:
"
&
table_left
&
"
px;top:
"
&
table_top
&
"
px;WIDTH:
"
&
all_width
&
"
px;HEIGHT:
"
&
all_height
&
"
px;' coordsize = '23500,12700'>
"
![None.gif](/Images/OutliningIndicators/None.gif)
response.Write
"
<v:Rect style='position:relative;left:1500;top:200;width:20000;height:800'filled='false' stroked='false'>"
response.Write
"
<v:TextBox inset='0pt,0pt,0pt,0pt'>"
response.Write
"
<table width='100%' border='0' align='center' cellspacing='0'>"
response.Write
"
<tr>"
response.Write
"
<td align='center' valign='middle'><div style='font-size:15pt; font-family:黑体;'><B>
"
&
table_title
&
"
</B></div></td>"
response.Write
"
</tr>"
response.Write
"
</table>"
response.Write
"
</v:TextBox>"
response.Write
"
</v:Rect> "
response.Write
"
<v:rect id='back' style='position:relative;left:1700;top:1200;width:20500; height:10500;' fillcolor='#9cf' strokecolor='#DFDFDF'>"
response.Write
"
<v:fill rotate='t' angle='-45' focus='100%' type='gradient'/>"
response.Write
"
</v:rect>"
response.Write
"
<v:line ID='X' from='1700,11700' to='22700,11700' style='z-index:2' strokecolor='#000000' strokeWeight=1pt><v:stroke EndArrow='Classic'/></v:line>"
response.Write
"
<v:line ID='Y' from='1700,900' to='1700,11700' style='z-index:2' strokecolor='#000000' strokeWeight=1pt><v:stroke StartArrow='Classic'/></v:line>"
response.Write
"
<v:Rect style='position:relative;left:100;top:700;width:1500;height:500' filled='false' stroked='false'>"
response.Write
"
<v:TextBox inset='0pt,0pt,0pt,0pt' style='font-size:9pt;'><div align='right'>
"
&
Y_unit
&
"
</div></v:TextBox>"
response.Write
"
</v:Rect>
"
response.Write
"
<v:Rect style='position:relative;left:22200;top:11700;width:2000;height:500' filled='false' stroked='false'>"
response.Write
"
<v:TextBox inset='0pt,0pt,0pt,0pt' style='font-size:9pt;'><div align='left'>
"
&
X_unit
&
"
</div></v:TextBox>"
response.Write
"
</v:Rect>
"
for
i
=
0
to
4
response.Write
"
<v:line from='1200,
"
&
i
*
2000
+
1700
&
"
' to='1700,
"
&
i
*
2000
+
1700
&
"
' style='z-index:2' strokecolor='#000000'></v:line>"
response.Write
"
<v:line from='1700,
"
&
i
*
2000
+
1700
&
"
' to='2200,
"
&
i
*
2000
+
1200
&
"
' style='z-index:2' strokecolor='#0099FF'></v:line>"
response.Write
"
<v:line from='2200,
"
&
i
*
2000
+
1200
&
"
' to='22200,
"
&
i
*
2000
+
1200
&
"
' style='z-index:2' strokecolor='#0099FF'></v:line>"
response.Write
"
<v:line from='2200,
"
&
i
*
2000
+
2200
&
"
' to='22200,
"
&
i
*
2000
+
2200
&
"
' style='z-index:2' strokecolor='#0099FF'>"
response.Write
"
<v:stroke dashstyle='Dot'/>"
response.Write
"
</v:line>"
response.Write
"
<v:Rect style='position:relative;left:100;top:
"
&
i
*
2000
+
1250
&
"
;width:1500;height:500' filled='false' stroked='false'>"
response.Write
"
<v:TextBox inset='0pt,0pt,0pt,0pt' style='font-size:9pt;'><div align='right'>
"
&
item_hight
*
(
5
-
i)
&
"
</div></v:TextBox>"
response.Write
"
</v:Rect>
"
next
![None.gif](/Images/OutliningIndicators/None.gif)
response.Write
"
<v:line from='2200,11200' to='22200,11200' style='z-index:2' strokecolor='#0099FF'></v:line>"
response.Write
"
<v:line from='2200,1200' to='2200,11200' style='z-index:2' strokecolor='#0099FF'></v:line>"
response.Write
"
<v:line from='1700,11700' to='2200,11200' style='z-index:2' strokecolor='#0099FF'></v:line>"
for
i
=
1
to
num
this_hight
=
cint
(stat_array(i,
1
)
/
(
5
*
item_hight)
*
10000
+
420
)
response.Write
"
<v:shape id='Box
"
&
i
&
"
' type='#Box' fillcolor='
"
&
bg_color(i)
&
"
' strokecolor='#5f5f5f' style='position:relative; left:
"
&
(i
-
1
)
*
item_width
+
begin_x
&
"
;top:
"
&
cint
(
10000
-
this_hight
+
1620
)
&
"
;width:1200;height:
"
&
this_hight
&
"
;z-index:10'>"
response.Write
"
<v:fill o:opacity2='52429f' rotate='t' angle='-45' focus='100%' type='gradient'/>"
response.Write
"
</v:shape>"
response.Write
"
<v:Rect style='position:relative;left:
"
&
(i
-
1
)
*
item_width
+
2200
&
"
;top:
"
&
cint
(
10000
-
this_hight
+
1150
)
&
"
;width:
"
&
item_width
&
"
;height:500' filled='false' stroked='false'>"
response.Write
"
<v:TextBox inset='0pt,0pt,0pt,0pt' style='font-size:9pt;'><div align='center'>
"
&
stat_array(i,
1
)
&
"
</div></v:TextBox>"
response.Write
"
</v:Rect>
"
![None.gif](/Images/OutliningIndicators/None.gif)
response.Write
"
<v:Rect style='position:relative;left:
"
&
(i
-
1
)
*
item_width
+
2200
&
"
;top:11850;width:
"
&
item_width
&
"
;height:500' filled='false' stroked='false'>"
response.Write
"
<v:TextBox inset='0pt,0pt,0pt,0pt' style='font-size:9pt;'><div align='center'>
"
&
stat_array(i,
2
)
&
"
</div></v:TextBox>"
response.Write
"
</v:Rect>
"
next
response.Write
"
</v:group>"
end function
%
>
<
html xmlns:v
=
"
urn:schemas-microsoft-com:vml
"
xmlns:o
=
"
urn:schemas-microsoft-com:office:office
"
>
<
head
>
<
title
></
title
>
<
STYLE
>
v
\
:
*
{ Behavior: url(#default#VML) }
o
\
:
*
{ behavior: url(#default#VML) }
</
STYLE
>
</
head
>
<
body
>
![None.gif](/Images/OutliningIndicators/None.gif)
<
%
dim
total(
10
,
2
)
![None.gif](/Images/OutliningIndicators/None.gif)
total(
1
,
1
)
=
200
total(
2
,
1
)
=
800
total(
3
,
1
)
=
1004
total(
4
,
1
)
=
600
total(
5
,
1
)
=
1222
total(
6
,
1
)
=
2100
total(
7
,
1
)
=
80
total(
8
,
1
)
=
1002
total(
9
,
1
)
=
145
total(
10
,
1
)
=
1040
![None.gif](/Images/OutliningIndicators/None.gif)
total(
1
,
2
)
=
"
项目1"
total(
2
,
2
)
=
"
项目2"
total(
3
,
2
)
=
"
项目3"
total(
4
,
2
)
=
"
项目4"
total(
5
,
2
)
=
"
项目5"
total(
6
,
2
)
=
"
项目6"
total(
7
,
2
)
=
"
项目7"
total(
8
,
2
)
=
"
项目8"
total(
9
,
2
)
=
"
项目9"
total(
10
,
2
)
=
"
项目10"
call
table1(total,
240
,
200
,
700
,
400
,
"
柱 状 统 计 图
"
,
""
,
"
元
"
)
%
>
![None.gif](/Images/OutliningIndicators/None.gif)
</
body
>
</
html
>
二、统计图--饼图
<
%
'
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
'
┃ ┃
'
┃ 摘 要: 统计图--饼图 ┃
'
┃ 作 者: 翁云兵 ┃
'
┃ 创建日期:2004年11月23日 ┃
'
┃ 完成日期:2004年11月28日 ┃
'
┃ ┃
'
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
'
参数含义(数组,横坐标,纵坐标,图表的宽度,图表的高度,图表标题,单位)
function
table2(stat_array,table_left,table_top,all_width,all_height,table_title,unit)
dim
bg_color(
10
),pie(
10
)
bg_color(
1
)
=
"
#ff1919"
bg_color(
2
)
=
"
#ffff19"
bg_color(
3
)
=
"
#1919ff"
bg_color(
4
)
=
"
#19ff19"
bg_color(
5
)
=
"
#fc0"
bg_color(
6
)
=
"
#3cc"
bg_color(
7
)
=
"
#ff19ff"
bg_color(
8
)
=
"
#993300"
bg_color(
9
)
=
"
#f60"
bg_color(
10
)
=
"
#ff8c19"
num
=
ubound
(stat_array,
1
)
allvalues
=
0
for
i
=
1
to
num
allvalues
=
allvalues
+
stat_array(i,
1
)
next
k
=
0
for
i
=
1
to
num
-
1
pie(i)
=
formatnumber
(stat_array(i,
1
)
/
allvalues,
4
,
-
1
)
k
=
k
+
pie(i)
next
pie(num)
=
formatnumber
((
1
-
k),
4
,
-
1
)
![None.gif](/Images/OutliningIndicators/None.gif)
response.Write
"
<v:shapetype id='Cake_3D' coordsize='21600,21600' o:spt='95' adj='11796480,5400' path='al10800,10800@0@0@2@14,10800,10800,10800,10800@3@15xe'></v:shapetype>"
response.Write
"
<v:shapetype id='3dtxt' coordsize='21600,21600' o:spt='136' adj='10800' path='m@7,l@8,m@5,21600l@6,21600e'> "
response.Write
"
<v:path textpathok='t' o:connecttype='custom' o:connectlocs='@9,0;@10,10800;@11,21600;@12,10800' o:connectangles='270,180,90,0'/>"
response.Write
"
<v:textpath on='t' fitshape='t'/>"
response.Write
"
<o:lock v:ext='edit' text='t' shapetype='t'/>"
response.Write
"
</v:shapetype>"
response.Write
"
<v:rect id='background' style='position:absolute;left:
"
&
table_left
&
"
px;top:
"
&
table_top
&
"
px;WIDTH:
"
&
all_width
&
"
px;HEIGHT:
"
&
all_height
&
"
px;' fillcolor='#EFEFEF' strokecolor='gray'>"
response.Write
"
<v:shadow on='t' type='single' color='silver' offset='4pt,4pt'/>"
response.Write
"
</v:rect>"
response.Write
"
<v:group ID='table' style='position:absolute;left:
"
&
table_left
&
"
px;top:
"
&
table_top
&
"
px;WIDTH:
"
&
all_width
&
"
px;HEIGHT:
"
&
all_height
&
"
px;' coordsize = '21000,11500'>
"
response.Write
"
<v:Rect style='position:relative;left:500;top:200;width:20000;height:800'filled='false' stroked='false'>"
response.Write
"
<v:TextBox inset='0pt,0pt,0pt,0pt'>"
response.Write
"
<table width='100%' border='0' align='center' cellspacing='0'>"
response.Write
"
<tr>"
response.Write
"
<td align='center' valign='middle'><div style='font-size:15pt; font-family:黑体;'><B>
"
&
table_title
&
"
</B></div></td>"
response.Write
"
</tr>"
response.Write
"
</table>"
response.Write
"
</v:TextBox>"
response.Write
"
</v:Rect> "
response.Write
"
<v:rect id='back' style='position:relative;left:500;top:1000;width:20000; height:10000;' οnmοuseοver='movereset(1)' οnmοuseοut='movereset(0)' fillcolor='#9cf' strokecolor='#888888'>"
response.Write
"
<v:fill rotate='t' angle='-45' focus='100%' type='gradient'/>"
response.Write
"
</v:rect>"
response.Write
"
<v:rect id='back' style='position:relative;left:15000;top:1400;width:5000; height:
"
&
((num
+
1
)
*
9000
/
11
+
200
)
&
"
;' fillcolor='#9cf' stroked='t' strokecolor='#0099ff'>"
response.Write
"
<v:fill rotate='t' angle='-175' focus='100%' type='gradient'/>"
response.Write
"
<v:shadow on='t' type='single' color='silver' offset='3pt,3pt'/>"
response.Write
"
</v:rect>"
response.Write
"
<v:Rect style='position:relative;left:15500;top:1500;width:4000;height:700' fillcolor='#000000' stroked='f' strokecolor='#000000'>"
response.Write
"
<v:TextBox inset='8pt,4pt,3pt,3pt' style='font-size:11pt;'><div align='left'><font color='#ffffff'><B>总数:
"
&
allvalues
&
unit
&
"
</B></font></div></v:TextBox>"
response.Write
"
</v:Rect>
"
for
i
=
1
to
num
response.Write
"
<v:Rect id='rec
"
&
i
&
"
' style='position:relative;left:15400;top:
"
&
i
*
9000
/
11
+
1450
&
"
;width:4300;height:800;display:none' fillcolor='#efefef' strokecolor='
"
&
bg_color(i)
&
"
'>"
response.Write
"
<v:fill opacity='.6' color2='fill darken(118)' o:opacity2='.6' rotate='t' method='linear sigma' focus='100%' type='gradient'/>"
response.Write
"
</v:Rect>"
response.Write
"
<v:Rect style='position:relative;left:15500;top:
"
&
i
*
9000
/
11
+
1500
&
"
;width:600;height:700' fillcolor='
"
&
bg_color(i)
&
"
' stroked='f'/>"
response.Write
"
<v:Rect style='position:relative;left:16300;top:
"
&
i
*
9000
/
11
+
1500
&
"
;width:3400;height:700' filled='f' stroked='f'>"
response.Write
"
<v:TextBox inset='0pt,5pt,0pt,0pt' style='font-size:9pt;'><div align='left'>
"
&
stat_array(i,
2
)
&
"
:
"
&
stat_array(i,
1
)
&
unit
&
"
</div></v:TextBox>"
response.Write
"
</v:Rect>
"
next
![None.gif](/Images/OutliningIndicators/None.gif)
response.Write
"
</v:group>"
k1
=
180
k4
=
10
for
i
=
1
to
num
k2
=
360
*
pie(i)
/
2
k3
=
k1
+
k2
if
k3
>=
360
then
k3
=
k3
-
360
end
if
kkk
=
(
-
11796480
*
pie(i)
+
5898240
)
![None.gif](/Images/OutliningIndicators/None.gif)
k5
=
3.1414926
*
2
*
(
180
-
(k3
-
180
))
/
360
R
=
all_height
/
2
txt_x
=
table_left
+
all_height
/
8
-
30
+
R
+
R
*
sin
(k5)
*
0.7
txt_y
=
table_top
+
all_height
/
14
-
39
+
R
+
R
*
cos
(k5)
*
0.7
*
0.5
![None.gif](/Images/OutliningIndicators/None.gif)
titlestr
=
"
名 称:
"
&
stat_array(i,
2
)
&
"
数 值:
"
&
stat_array(i,
1
)
&
unit
&
"
所占比例:
"
&
pie(i)
*
100
&
"
% "
response.Write
"
<div style='cursor:hand;'>"
response.Write
"
<v:shape id='cake
"
&
i
&
"
' type='#Cake_3D' title='
"
&
titlestr
&
"
'"
response.Write
"
style='position:absolute;left:
"
&
table_left
+
all_height
/
8
&
"
px;top:
"
&
table_top
+
all_height
/
14
&
"
px;WIDTH:
"
&
all_height
&
"
px;HEIGHT:
"
&
all_height
&
"
px;rotation:
"
&
k3
&
"
;z-index:
"
&
k4
&
"
'"
response.Write
"
adj='
"
&
kkk
&
"
,0' fillcolor='
"
&
bg_color(i)
&
"
' οnmοuseοver='moveup(cake
"
&
i
&
"
,
"
&
(table_top
+
all_height
/
14
)
&
"
,txt
"
&
i
&
"
,rec
"
&
i
&
"
)'; οnmοuseοut='movedown(cake
"
&
i
&
"
,
"
&
(table_top
+
all_height
/
14
)
&
"
,txt
"
&
i
&
"
,rec
"
&
i
&
"
);'>"
response.Write
"
<v:fill opacity='60293f' color2='fill lighten(120)' o:opacity2='60293f' rotate='t' angle='-135' method='linear sigma' focus='100%' type='gradient'/>"
response.Write
"
<o:extrusion v:ext='view' on='t'backdepth='25' rotationangle='60' viewpoint='0,0'viewpointorigin='0,0' skewamt='0' lightposition='-50000,-50000' lightposition2='50000'/>"
response.Write
"
</v:shape>"
response.Write
"
<v:shape id='txt
"
&
i
&
"
' type='#3dtxt' style='position:absolute;left:
"
&
txt_x
&
"
px;top:
"
&
txt_y
&
"
px;z-index:20;display:none;width:50; height:18;' fillcolor='#ffffff'"
response.Write
"
οnmοuseοver='ontxt(cake
"
&
i
&
"
,
"
&
(table_top
+
all_height
/
14
)
&
"
,txt
"
&
i
&
"
,rec
"
&
i
&
"
)'>"
response.Write
"
<v:fill opacity='60293f' color2='fill lighten(120)' o:opacity2='60293f' rotate='t' angle='-135' method='linear sigma' focus='100%' type='gradient'/>"
response.Write
"
<v:textpath style='font-family:'宋体';v-text-kern:t' trim='t' fitpath='t' string='
"
&
pie(i)
*
100
&
"
%'/>"
response.Write
"
<o:extrusion v:ext='view' backdepth='8pt' on='t' lightposition='0,0' lightposition2='0,0'/>"
response.Write
"
</v:shape>
"
response.Write
"
</div>"
k1
=
k1
+
k2
*
2
if
k1
>=
360
then
k1
=
k1
-
360
end
if
if
k1
>
180
then
k4
=
k4
+
1
else
k4
=
k4
-
1
end
if
next
end function
%
>
<
html xmlns:v
=
"
urn:schemas-microsoft-com:vml
"
xmlns:o
=
"
urn:schemas-microsoft-com:office:office
"
>
<
head
>
<
title
></
title
>
<
STYLE
>
v
\
:
*
{ Behavior: url(#default#VML) }
o
\
:
*
{ behavior: url(#default#VML) }
</
STYLE
>
</
head
>
<
body
>
![None.gif](/Images/OutliningIndicators/None.gif)
<
SCRIPT LANGUAGE
=
"
JavaScript
"
>
<
!
--
onit
=
true
num
=
0
function
moveup(iteam,top,txt,rec){
temp
=
eval
(iteam)
tempat
=
eval
(top)
temptxt
=
eval
(txt)
temprec
=
eval
(rec)
at
=
parseInt(temp.style.top)
temprec.style.display
=
""
;
if
(num
>
27
){
temptxt.style.display
=
""
;
}
if
(at
>
(tempat
-
28
)
&&
onit){
num
++
temp.style.top
=
at
-
1
Stop
=
setTimeout(
"
moveup(temp,tempat,temptxt,temprec)
"
,
10
)
}
else
{
return
}
}
function
movedown(iteam,top,txt,rec){
temp
=
eval
(iteam)
temptxt
=
eval
(txt)
temprec
=
eval
(rec)
clearTimeout(Stop)
temp.style.top
=
top
num
=
0
temptxt.style.display
=
"
none
"
;
temprec.style.display
=
"
none
"
;
}
function
ontxt(iteam,top,txt,rec){
temp
=
eval
(iteam);
temptxt
=
eval
(txt);
temprec
=
eval
(rec)
if
(onit){
temp.style.top
=
top
-
28
;
temptxt.style.display
=
""
;
temprec.style.display
=
""
;
}
}
function
movereset(over){
if
(over
==
1
){
onit
=
false
}
else
{
onit
=
true
}
}
-->
</
script
>
<
%
dim
total(
10
,
2
)
![None.gif](/Images/OutliningIndicators/None.gif)
total(
1
,
1
)
=
2000
total(
2
,
1
)
=
1800
total(
3
,
1
)
=
1700
total(
4
,
1
)
=
1500
total(
5
,
1
)
=
1222
total(
6
,
1
)
=
1100
total(
7
,
1
)
=
1000
total(
8
,
1
)
=
800
total(
9
,
1
)
=
700
total(
10
,
1
)
=
600
![None.gif](/Images/OutliningIndicators/None.gif)
total(
1
,
2
)
=
"
项目1"
total(
2
,
2
)
=
"
项目2"
total(
3
,
2
)
=
"
项目3"
total(
4
,
2
)
=
"
项目4"
total(
5
,
2
)
=
"
项目5"
total(
6
,
2
)
=
"
项目6"
total(
7
,
2
)
=
"
项目7"
total(
8
,
2
)
=
"
项目8"
total(
9
,
2
)
=
"
项目9"
total(
10
,
2
)
=
"
项目10"
call
table2(total,
240
,
200
,
700
,
400
,
"
三维饼状图
"
,
"
元
"
)
%
>
</
body
>
</
html
>
三、统计图--曲线图
<
%
'
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
'
┃ ┃
'
┃ 摘 要: 统计图--曲线图 ┃
'
┃ 作 者: 翁云兵 ┃
'
┃ 创建日期:2004年12月01日 ┃
'
┃ 完成日期:2004年11月03日 ┃
'
┃ ┃
'
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
'
参数含义(数组,横坐标,纵坐标,图表的宽度,图表的高度,图表标题,X轴单位,Y轴单位)
function
table1(stat_array,table_left,table_top,all_width,all_height,table_title,X_unit,Y_unit)
dim
bg_color(
10
)
bg_color(
1
)
=
"
#ff1919"
bg_color(
2
)
=
"
#ffff19"
bg_color(
3
)
=
"
#1919ff"
bg_color(
4
)
=
"
#19ff19"
bg_color(
5
)
=
"
#fc0"
bg_color(
6
)
=
"
#3cc"
bg_color(
7
)
=
"
#ff19ff"
bg_color(
8
)
=
"
#993300"
bg_color(
9
)
=
"
#f60"
bg_color(
10
)
=
"
#ff8c19"
if
X_unit
<>
""
then
X_unit
=
X_unit
end
if
if
Y_unit
<>
""
then
Y_unit
=
Y_unit
end
if
![None.gif](/Images/OutliningIndicators/None.gif)
num1
=
ubound
(stat_array,
1
)
line_temp
=
split
(stat_array(
0
,
1
),
"
,
"
)
num2
=
ubound
(line_temp,
1
)
+
1
dim
line_code
redim
line_code(num1,num2)
for
j
=
1
to
num2
line_code(
0
,j)
=
line_temp(j
-
1
)
next
for
i
=
1
to
num1
line_temp
=
split
(stat_array(i,
1
),
"
,
"
)
line_code(i,
0
)
=
stat_array(i,
2
)
for
j
=
1
to
num2
line_code(i,j)
=
cdbl
(line_temp(j
-
1
))
next
next
value_Max
=
0
for
i
=
1
to
num1
for
j
=
1
to
num2
if
value_Max
<
line_code(i,j)
then
value_Max
=
line_code(i,j)
next
next
![None.gif](/Images/OutliningIndicators/None.gif)
value_Max
=
cint
(value_Max)
value_Max_str
=
cstr
(value_Max)
if
value_Max
>
9
then
temp
=
mid
(value_Max_str,
2
,
1
)
if
temp
>
4
then
temp2
=
(
int
(value_Max
/
(
10
^
(
len
(value_Max_str)
-
1
)))
+
1
)
*
10
^
(
len
(value_Max_str)
-
1
)
else
temp2
=
(
int
(value_Max
/
(
10
^
(
len
(value_Max_str)
-
1
)))
+
0.5
)
*
10
^
(
len
(value_Max_str)
-
1
)
end
if
else
if
value_Max
>
4
then
temp2
=
10
else
temp2
=
5
end
if
item_hight
=
temp2
/
5
![None.gif](/Images/OutliningIndicators/None.gif)
item_width
=
20000
/
(num2
-
1
)
![None.gif](/Images/OutliningIndicators/None.gif)
response.Write
"
<v:rect id='background' style='position:absolute;left:
"
&
table_left
&
"
px;top:
"
&
table_top
&
"
px;WIDTH:
"
&
all_width
&
"
px;HEIGHT:
"
&
all_height
&
"
px;' fillcolor='#EFEFEF' strokecolor='gray'>"
response.Write
"
<v:shadow on='t' type='single' color='silver' offset='4pt,4pt'/>"
response.Write
"
</v:rect>"
response.Write
"
<v:group ID='table' style='position:absolute;left:
"
&
table_left
&
"
px;top:
"
&
table_top
&
"
px;WIDTH:
"
&
all_width
&
"
px;HEIGHT:
"
&
all_height
&
"
px;' coordsize = '27500,12800'>"
response.Write
"
<v:Rect style='position:relative;left:1500;top:200;width:23000;height:800'filled='false' stroked='f'>"
response.Write
"
<v:TextBox inset='0pt,0pt,0pt,0pt'>"
response.Write
"
<table width='100%' border='0' align='center' cellspacing='0'>"
response.Write
"
<tr>"
response.Write
"
<td align='center' valign='middle'><div style='font-size:15pt; font-family:黑体;'><B>
"
&
table_title
&
"
</B></div></td>"
response.Write
"
</tr>"
response.Write
"
</table>"
response.Write
"
</v:TextBox>"
response.Write
"
</v:Rect> "
response.Write
"
<v:rect id='back' style='position:relative;left:1700;top:1200;width:20500; height:10500;' fillcolor='#9cf' strokecolor='#DFDFDF'>"
response.Write
"
<v:fill rotate='t' angle='-45' focus='100%' type='gradient'/>"
response.Write
"
</v:rect>"
response.Write
"
<v:rect id='back2' style='position:relative;left:23000;top:1200;width:4000; height:
"
&
(
10500
)
&
"
;' fillcolor='#9cf' stroked='t' strokecolor='#0099ff'>"
response.Write
"
<v:fill rotate='t' angle='-175' focus='100%' type='gradient'/>"
response.Write
"
<v:shadow on='t' type='single' color='silver' offset='3pt,3pt'/>"
response.Write
"
</v:rect>"
for
i
=
1
to
num1
if
i
=
1
then
displaystr
=
"
"
else
displaystr
=
"
none"
end
if
response.Write
"
<div style='cursor:hand;' οnmοuseοver='moveon(rec
"
&
i
&
"
,line_
"
&
i
&
"
)' οnmοuseοut='moveout(rec
"
&
i
&
"
,line_
"
&
i
&
"
,
"
&
i
&
"
)' οnclick='clickit(
"
&
i
&
"
)'>"
response.Write
"
<v:Rect id='rec
"
&
i
&
"
' style='position:relative;left:23100;top:
"
&
(i
-
1
)
*
10200
/
10
+
1450
&
"
;width:3800;height:800;display:
"
&
displaystr
&
"
;' fillcolor='#efefef' strokecolor='
"
&
bg_color(i)
&
"
'>"
response.Write
"
<v:fill opacity='.6' color2='fill darken(118)' o:opacity2='.6' rotate='t' method='linear sigma' focus='100%' type='gradient'/>"
response.Write
"
</v:Rect>"
response.Write
"
<v:Rect style='position:relative;left:23200;top:
"
&
(i
-
1
)
*
10200
/
10
+
1500
&
"
;width:600;height:700' fillcolor='
"
&
bg_color(i)
&
"
' stroked='f'/>"
response.Write
"
<v:Rect style='position:relative;left:24000;top:
"
&
(i
-
1
)
*
10200
/
10
+
1500
&
"
;width:3400;height:700' filled='f' stroked='f'>"
response.Write
"
<v:TextBox inset='0pt,4pt,0pt,0pt' style='font-size:9pt;'><div align='left'>
"
&
stat_array(i,
2
)
&
"
</div></v:TextBox>"
response.Write
"
</v:Rect> "
response.Write
"
</div> "
next
![None.gif](/Images/OutliningIndicators/None.gif)
response.Write
"
<v:line ID='X' from='1700,11700' to='22700,11700' style='z-index:2' strokecolor='#000000' strokeWeight=1pt><v:stroke EndArrow='Classic'/></v:line>"
response.Write
"
<v:line ID='Y' from='1700,900' to='1700,11700' style='z-index:2' strokecolor='#000000' strokeWeight=1pt><v:stroke StartArrow='Classic'/></v:line>"
response.Write
"
<v:Rect style='position:relative;left:100;top:700;width:1500;height:500' filled='false' stroked='false'>"
response.Write
"
<v:TextBox inset='0pt,0pt,0pt,0pt' style='font-size:9pt;'><div align='right'>
"
&
Y_unit
&
"
</div></v:TextBox>"
response.Write
"
</v:Rect>
"
response.Write
"
<v:Rect style='position:relative;left:22200;top:11900;width:2000;height:500' filled='false' stroked='false'>"
response.Write
"
<v:TextBox inset='0pt,0pt,0pt,0pt' style='font-size:9pt;'><div align='left'>
"
&
X_unit
&
"
</div></v:TextBox>"
response.Write
"
</v:Rect>
"
![None.gif](/Images/OutliningIndicators/None.gif)
for
i
=
0
to
4
response.Write
"
<v:line from='1300,
"
&
i
*
2000
+
1700
&
"
' to='1700,
"
&
i
*
2000
+
1700
&
"
' style='z-index:2' strokecolor='#000000'></v:line>"
response.Write
"
<v:line from='1700,
"
&
i
*
2000
+
1700
&
"
' to='2200,
"
&
i
*
2000
+
1200
&
"
' style='z-index:2' strokecolor='#0099FF'></v:line>"
response.Write
"
<v:line from='2200,
"
&
i
*
2000
+
1200
&
"
' to='22200,
"
&
i
*
2000
+
1200
&
"
' style='z-index:2' strokecolor='#0099FF'></v:line>"
response.Write
"
<v:line from='2200,
"
&
i
*
2000
+
2200
&
"
' to='22200,
"
&
i
*
2000
+
2200
&
"
' style='z-index:2' strokecolor='#0099FF'>"
response.Write
"
<v:stroke dashstyle='Dot'/>"
response.Write
"
</v:line>"
response.Write
"
<v:Rect style='position:relative;left:100;top:
"
&
i
*
2000
+
1250
&
"
;width:1500;height:500' filled='false' stroked='false'>"
response.Write
"
<v:TextBox inset='0pt,0pt,0pt,0pt' style='font-size:9pt;'><div align='right'>
"
&
item_hight
*
(
5
-
i)
&
"
</div></v:TextBox>"
response.Write
"
</v:Rect>
"
next
![None.gif](/Images/OutliningIndicators/None.gif)
response.Write
"
<v:line from='2200,11200' to='22200,11200' style='z-index:2' strokecolor='#0099FF'></v:line>"
response.Write
"
<v:line from='2200,1200' to='2200,11200' style='z-index:2' strokecolor='#0099FF'></v:line>"
response.Write
"
<v:line from='1700,11700' to='2200,11200' style='z-index:2' strokecolor='#0099FF'></v:line>"
for
j
=
0
to
num2
-
1
response.Write
"
<v:line from='
"
&
j
*
item_width
+
1700
&
"
,11700' to='
"
&
j
*
item_width
+
1700
&
"
,12000' style='z-index:2' strokecolor='#000000'></v:line>"
response.Write
"
<v:line from='
"
&
j
*
item_width
+
1700
&
"
,11700' to='
"
&
j
*
item_width
+
2200
&
"
,11200' style='z-index:2' strokecolor='#0099FF'><v:stroke dashstyle='ShortDot'/></v:line>"
response.Write
"
<v:line from='
"
&
j
*
item_width
+
2200
&
"
,1200' to='
"
&
j
*
item_width
+
2200
&
"
,11200' style='z-index:2' strokecolor='#0099FF'><v:stroke dashstyle='ShortDot'/></v:line>"
response.Write
"
<v:Rect style='position:relative;left:
"
&
j
*
item_width
+
1700
-
item_width
/
2
&
"
;top:12100;width:
"
&
item_width
&
"
;height:500' filled='false' stroked='false'>"
response.Write
"
<v:TextBox inset='0pt,0pt,0pt,0pt' style='font-size:9pt;'><div align='center'>
"
&
line_code(
0
,j
+
1
)
&
"
</div></v:TextBox>"
response.Write
"
</v:Rect>
"
next
for
i
=
1
to
num1
if
i
=
1
then
displaystr
=
"
"
else
displaystr
=
"
none"
end
if
response.Write
"
<div id='line_
"
&
i
&
"
' style='display:
"
&
displaystr
&
"
;'>"
for
j
=
0
to
num2
-
2
this_hight1
=
cint
(line_code(i,j
+
1
)
/
(
5
*
item_hight)
*
10000
)
this_hight2
=
cint
(line_code(i,j
+
2
)
/
(
5
*
item_hight)
*
10000
)
response.Write
"
<v:line from='
"
&
j
*
item_width
+
1850
&
"
,
"
&
(
10000
-
this_hight1
+
1550
)
&
"
' to='
"
&
(j
+
1
)
*
item_width
+
1850
&
"
,
"
&
(
10000
-
this_hight2
+
1550
)
&
"
'style='z-index:
"
&
i
*
10
&
"
;' strokeweight='0.1pt' strokecolor='
"
&
bg_color(i)
&
"
'>"
response.Write
"
<o:extrusion v:ext='view' backdepth='12pt' on='t' lightposition='-50000,-50000' lightposition2='50000'/>"
response.Write
"
</v:line>"
next
response.Write
"
</div>"
next
![None.gif](/Images/OutliningIndicators/None.gif)
response.Write
"
</v:group>
"
end function
%
>
<
html xmlns:v
=
"
urn:schemas-microsoft-com:vml
"
xmlns:o
=
"
urn:schemas-microsoft-com:office:office
"
>
<
head
>
<
title
></
title
>
<
STYLE
>
v
\
:
*
{ Behavior: url(#default#VML) }
o
\
:
*
{ behavior: url(#default#VML) }
</
STYLE
>
<
SCRIPT LANGUAGE
=
"
JavaScript
"
>
<
!
--
var showit
=
new
Array
(
10
);
![None.gif](/Images/OutliningIndicators/None.gif)
function
moveon(iteam,lineit){
temp
=
eval
(iteam)
templine
=
eval
(lineit)
if
(showit[
1
]){
rec1.style.display
=
""
;
line_1.style.display
=
""
;
}
else
{
rec1.style.display
=
"
none
"
;
line_1.style.display
=
"
none
"
;
}
temp.style.display
=
""
;
templine.style.display
=
""
;
}
function
moveout(iteam,lineit,i){
temp
=
eval
(iteam)
templine
=
eval
(lineit)
if
(showit[i]){
temp.style.display
=
""
;
templine.style.display
=
""
;
}
else
{
temp.style.display
=
"
none
"
;
templine.style.display
=
"
none
"
;
}
}
function
clickit(i){
if
(showit[i]){
showit[i]
=
false
}
else
{
showit[i]
=
true
}
}
-->
</
script
>
</
head
>
<
body
>
![None.gif](/Images/OutliningIndicators/None.gif)
<
%
dim
total(
10
,
2
)
![None.gif](/Images/OutliningIndicators/None.gif)
total(
0
,
1
)
=
"
1月,2月,3月,4月,5月,6月,7月,8月,9月,10月,11月,12月"
total(
1
,
1
)
=
"
200,158,982,0,369,100,595,895,652,25,245,951"
total(
2
,
1
)
=
"
984,58,495,36,158,486,952,258,653,415,485,14"
total(
3
,
1
)
=
"
850,988,958,145,369,745,265,158,856,145,425,352"
total(
4
,
1
)
=
"
600,525,235,485,258,265,158,365,35,148,658,475"
total(
5
,
1
)
=
"
62,525,635,215,0,465,258,305,66,547,54,148"
total(
6
,
1
)
=
"
560,625,645,329,158,665,358,95,120,358,42,253"
total(
7
,
1
)
=
"
950,725,635,435,258,865,458,955,152,845,425,421"
total(
8
,
1
)
=
"
600,825,155,455,458,265,558,365,352,245,853,122"
total(
9
,
1
)
=
"
360,925,215,545,658,465,658,845,400,421,541,125"
total(
10
,
1
)
=
"
50,225,355,655,858,665,758,35,584,214,54,651"
total(
1
,
2
)
=
"
项目1"
total(
2
,
2
)
=
"
项目2"
total(
3
,
2
)
=
"
项目3"
total(
4
,
2
)
=
"
项目4"
total(
5
,
2
)
=
"
项目5"
total(
6
,
2
)
=
"
项目6"
total(
7
,
2
)
=
"
项目7"
total(
8
,
2
)
=
"
项目8"
total(
9
,
2
)
=
"
项目9"
total(
10
,
2
)
=
"
项目10"
![None.gif](/Images/OutliningIndicators/None.gif)
call
table1(total,
240
,
200
,
700
,
350
,
"
曲 线 统 计 图
"
,
"
时间
"
,
"
元
"
)
%
>
![None.gif](/Images/OutliningIndicators/None.gif)
</
body
>
</
html
>