All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
精选ASP.NET的实用代码_[Asp.Net教程]
初学者阅读:给初学.net的您几点建议_.net资料_编程技术
让你的.NET程序兼容不同版本的Dll文件_[Asp.Net教程]
Linux环境下如何使用PHP处理图像_php资料_编程技术
ASP.Net留言本:用ASP.Net和Access编写留言本_[Asp.Net教程]
列出SQL,SERVER中的表_mssql学习_编程技术
无废话C#设计模式之四:Factory,Method_.net资料_编程技术
C#中时间格式的转换_[Asp.Net教程]
在ASP.NET页中检测浏览器类型_.net资料_编程技术
如何将应用程序由ASP.NET,1.1移植到ASP.NET,2.0_[Asp.Net教程]
Reading number is top 10 pictures
India's national beauty of the college students
30 beautiful school beauty1
西游日记4
In the world the most mysterious 21 place landscape1
穷哥们向美女求婚攻略
两个妞在等世界上最短的火车
Cesarean section, bloody, silently into it!2
大人物的礼物
The money of more than 100 countries and regions16
Startling Russian girl blind date scene3
Download software ranking
双旗镇刀客A
SP3 for SQL2000
Unix video tutorial19
Ashlynn Video5
The Bermuda triangle2
变速齿轮3.26
虚拟机5.5.3版
Boxer's Top ten classic battle4
Unix video tutorial1
Tram sex maniac 2 (H) rar bag2
归海一刀 published in(发表于) 2014/2/10 6:53:59 Edit(编辑)
打造超酷的PHP数据饼图_[PHP教程]

打造超酷的PHP数据饼图_[PHP教程]

打造超酷的PHP数据饼图_[PHP教程]


源代码:

PHP代码如下:



//+------------------------+
//| pie3dfun.PHP//公用函数 |
//+------------------------+

define("ANGLE_STEP", 5);
//定义画椭圆弧时的角度步长

function draw_getdarkcolor(img,clr)
//求clr对应的暗色
{
rgb = imagecolorsforindex(img,clr
);
return array(rgb["red"]/2,rgb["green"]/2,rgb["blue"]/2
);
}

function draw_getexy(a, b, d)
//求角度d对应的椭圆上的点坐标
{
d = deg2rad(d
);
return array(round(a*Cos(d)), round(b*Sin(d
)));
}

function draw_arc(img,ox,oy,a,b,sd,ed,clr)
//椭圆弧函数
{
n = ceil((ed-sd)/ANGLE_STEP
);
d = sd
;
list(x0,y0) = draw_getexy(a,b,d
);
for(i=0; i++)
{
d = (d+ANGLE_STEP)>ed?ed:(d+ANGLE_STEP
);
list(x, y) = draw_getexy(a, b, d
);
imageline(img, x0+ox, y0+oy, x+ox, y+oy, clr
);
x0 = x
;
y0 = y
;
}
}

function draw_sector(img, ox, oy, a, b, sd, ed, clr)
//画扇面
{
n = ceil((ed-sd)/ANGLE_STEP
);
d = sd
;
list(x0,y0) = draw_getexy(a, b, d
);
imageline(img, x0+ox, y0+oy, ox, oy, clr
);
for(i=0; i++)
{
d = (d+ANGLE_STEP)>ed?ed:(d+ANGLE_STEP
);
list(x, y) = draw_getexy(a, b, d
);
imageline(img, x0+ox, y0+oy, x+ox, y+oy, clr
);
x0 = x
;
y0 = y
;
}
imageline(img, x0+ox, y0+oy, ox, oy, clr
);
list(x, y) = draw_getexy(a/2, b/2, (d+sd)/2
);
imagefill(img, x+ox, y+oy, clr
);
}

function draw_sector3d(img, ox, oy, a, b, v, sd, ed, clr)
//3d扇面
{
draw_sector(img, ox, oy, a, b, sd, ed, clr
);
if(sd<180
)
{
list(R, G, B) = draw_getdarkcolor(img, clr
);
clr=imagecolorallocate(img, R, G, B
);
if(ed>180) ed = 180
;
list(sx, sy) = draw_getexy(a,b,sd
);
sx += ox
;
sy += oy
;
list(ex, ey) = draw_getexy(a, b, ed
);
ex += ox
;
ey += oy
;
imageline(img, sx, sy, sx, sy+v, clr
);
imageline(img, ex, ey, ex, ey+v, clr
);
draw_arc(img, ox, oy+v, a, b, sd, ed, clr
);
list(sx, sy) = draw_getexy(a, b, (sd+ed)/2
);
sy += oy+v/2
;
sx += ox
;
imagefill(img, sx, sy, clr
);
}
}
function draw_getindexcolor(img, clr)
//RBG转索引色

{
R = (clr>>16) & 0xff
;
G = (clr>>8)& 0xff
;
B = (clr) & 0xff
;
return imagecolorallocate(img, R, G, B
);
}

// 绘图主函数,并输出图片
// datLst 为数据数组, datLst 为标签数组, datLst 为颜色数组
// 以上三个数组的维数应该相等
function draw_img(datLst,labLst,clrLst,a=250,b=120,v=20,font=10
)
{
ox = 5+a
;
oy = 5+b
;
fw = imagefontwidth(font
);
fh = imagefontheight(font
);

n = count(datLst);
//数据项个数

w = 10+a*2
;
h = 10+b*2+v+(fh+2)*n
;

img = imagecreate(w, h
);

//转RGB为索引色
for(i=0; i++)
clrLst[i] = draw_getindexcolor(img,clrLst[i
]);

clrbk = imagecolorallocate(img, 0xff, 0xff, 0xff
);
clrt = imagecolorallocate(img, 0x00, 0x00, 0x00
);

//填充背景色
imagefill(img, 0, 0, clrbk
);

//求和
tot = 0
;
for(i=0; i++)
tot += datLst[i
];
sd = 0
;
ed = 0;
333
ly = 10+b*2+v
;
for(i=0; i++)
{
sd = ed
;
ed += datLst[i]/tot*360
;

//画圆饼
draw_sector3d(img, ox, oy, a, b, v, sd, ed, clrLst[i]);
//sd,ed,clrLst[i]);

//画标签
imagefilledrectangle(img, 5, ly, 5+fw, ly+fh, clrLst[i
]);
imagerectangle(img, 5, ly, 5+fw, ly+fh, clrt
);
//imagestring(img, font, 5+2*fw, ly, labLst[i].":".datLst[i]."(".(round(10000*(datLst[i]/tot))/100)."%)", clrt);

str = iconv("GB2312", "UTF-8", labLst[i
]);
ImageTTFText(img, font, 0, 5+2*fw, ly+13, clrt, "./simsun.ttf", str.":".datLst[i]."(".(round(10000*(datLst[i]/tot))/100)."%)"
);
ly += fh+2
;
}

//输出图形
header("Content-type: image/png"
);

//输出生成的图片
imgFileName = "../temp/".time().".png"
;
imagepng(img,imgFileName
);
echo '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

}

datLst = array(30, 10, 20, 20, 10, 20, 10, 20); //数据
labLst = array("中国科技大学", "安徽理工大学", "清华大学", "北京大学", "南京大学", "上海大学", "河海大学", "中山大学"); //标签
clrLst = array(0x99ff00, 0xff6666, 0x0099ff, 0xff99ff, 0xffff99, 0x99ffff, 0xff3333, 0x009999);

//画图
draw_img(datLst,labLst,clrLst);
?>


作者:visam 来源:PHPchina






添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.