为方便生成三维饼图函数,我收集了asp下的生成三维饼图的函数的代码,方便大家特殊情况下的使用
代码如下:
<%
''参数含义(数组,横坐标,纵坐标,图表的宽度,图表的高度,图表标题,单位)
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)
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;'' onmouseover=''movereset(1)'' onmou
seout=''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
response.Write "</v:group>"
k1=180
k4=10
for i=1 to num
response.write "<a href=http://www.popasp.com/aaa.asp>"
k2=360*pie(i)/2
k3=k1+k2
if k3>=360 then
k3=k3-360
end if
kkk=(-11796480*pie(i)+5898240)
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
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)&"'' onmouseover=''moveup(cake"&i&","&(table_top+all_height/14)&",txt"&i&",rec"&i&")''; onmouseout=''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 " onmouseover=''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
response.write "</a>"
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>
<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)
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
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,120,20,900,500,"三维饼状图","元")
''参数含义(数组,横坐标,纵坐标,图表的宽度,图表的高度,图表标题,单位)
%>