php函数,php做饼图的函数(转)

如果您有疑问或建议,请进入技术讨论区交流 >>>
PHP做饼图的函数
作者:qdlover???发表日期:2000年9月15日???阅读次数:14
--------------------------------------------------------------------------------
再介绍一下我自己,呵呵
我是个新手,当时学php纯粹是为了应付领导哦,让我们做统计图,我本来是学ASP的,突然改行很不适应,不过php功能的确很强大呀,呵呵,我都离不了他了,这不,饼图,柱型图都搞定了,可是还有很多问题我不会,还希望大家多指教呀,说了好多废话了,我还以为是在写信那
我的联系方式是:
???????????????email:[email protected]
???????????????http://qdlover.yeah.net
老板催了,没办法,饼图函数出炉了,大家快抢呀
########
bimage.php3
########
/*
函数说明
$chartdata:数据,是数组元素
$chartfont:字号
$chartdiameter:决定饼的大小(要看你饿不饿了,呵呵)
$chartlabel:标题,也是数组元素
$colorslice:颜色数组,例如$tmp=array255,255,255);$colorslic=array($tmp);
$colorborder:边框颜色,数组
$colortext :文本颜色,数组
$colorbody:背景颜色,数组
$file&58输出图片文件名*/
function bimage($chartdata,
????????????????$chartfont,
????????????????$chartdiameter ,
????????????????$chartlabel ,
????????????????$colorslice,
????????????????$colorbody ,
????????????????$colorborder,
????????????????$colortext ,
????????????????$file
????????????????)
{
$chartdiameter=150;
?????$chartfontheight=imagefontheight($chartfont);
?????$d1=10;$d2=20;$d3=30;$d4=40;$d5=50;
?????$chartdata=array($d1,$d2,$d3,$d4,$d5);
?????$chartlabel=array("D1","D2","D3","D4","D5");
?????$chartwidth=$chartdiameter+20;
?????$chartheight=$chartdiameter+20+(($chartfontheight+2)*count($chartdata));
?????header("content-type:image/gif");
?????$image=imagecreate($chartwidth,$chartheight);
$colorbody =imagecolorallocate ($image,$colorbody[0],$colorbody[1],$colorbody[2]);
$colortext =imagecolorallocate ($image,$colortext[0],$colortext[1],$colortext[2]);
$colorborder =imagecolorallocate ($image,$colorborder[0],$colorborder[1],$colorborder[2]);
for ($i=0;$i {
$t=imagecolorallocate($image,$colorslice[$i][0],$colorslice[$i][1],$colorslice[$i][2]);
$colorslice[$i]=$t;
}

?????for($i=0;$i ?????{
?????$charttotal+=$chartdata[$i];
?????}
?????$chartcenterx=$chartdiameter/2+10;
?????$chartcentery=$chartdiameter/2+10;
????$degrees=0;
????for($i=0;$i ????{
????$startdegrees=round($degrees);
????$degrees+=(($chartdata[$i]/$charttotal)*360);
????$enddegrees=round($degrees);
????$currentcolor=$colorslice[$i%(count($colorslice))];
????imagearc($image ,
?????????????$chartcenterx,
?????????????$chartcentery,
?????????????$chartdiameter,
?????????????$chartdiameter,
?????????????$startdegrees,
?????????????$enddegrees,
?????????????$currentcolor);
?????????????list($arcx,$arcy)=circle_point($startdegrees,$chartdiameter);
?????????????imageline($image,
???????????????????????$chartcenterx,
???????????????????????$chartcentery,
???????????????????????floor($chartcenterx+$arcx),
???????????????????????floor($chartcentery+$arcy),
???????????????????????$currentcolor );
?????????????list($arcx,$arcy)=circle_point($enddegrees,$chartdiameter);
?????????????imageline($image,
???????????????????????$chartcenterx,
???????????????????????$chartcentery,
???????????????????????ceil($chartcenterx+$arcx),
???????????????????????ceil($chartcentery +$arcy),
???????????????????????$currentcolor);
?????????????$midpoint=round((($enddegrees-$startdegrees)/2)+$startdegrees);
?????????????list($arcx,$arcy)= circle_point ( $midpoint, $chartdiameter/2);
?????????????imagefilltoborder($image,
???????????????????????????????floor($chartcenterx+$arcx),
???????????????????????????????floor($chartcentery+$arcy),
???????????????????????????????$currentcolor,
???????????????????????????????$currentcolor);
?????}
?????imagearc($image,
??????????????$chartcenterx,
??????????????$chartcentery,
??????????????$chartdiameter,
??????????????$chartdiameter,
??????????????0,360,
??????????????$colorborder);
?????imagefilltoborder ($image,
????????????????????????floor($chartcenterx +( $chartdiameter /2)+2),
????????????????????????$chartcentery ,
????????????????????????$colorborder,
????????????????????????$colorborder );
??????for ($i=0;$i ??????{
??????$currentcolor=$colorslice[$i%(count($colorslice))];
??????$liney=$chartdiameter+20+($i*($chartfontheight+2));
??????imagerectangle ($image,
??????????????????????10,
??????????????????????$liney,
??????????????????????20+$chartfontheight,
??????????????????????$liney+$chartfontheight,
??????????????????????$colorbody);
??????imagefilltoborder($image,
???????????????????????12,
???????????????????????$liney+2,
???????????????????????$colorbody,
???????????????????????$currentcolor);
??????imagestring($image,
??????????????????$chartfont,
??????????????????40+$chartfontheight,
??????????????????$liney,
??????????????????"$chartlabel[$i]:$chartdata[$i]",
??????????????????$colortext);
??????}
?????????imagegif ($image,$file);
}
function radians($degrees)
?????{
?????return($degrees*(pi()/180.0));
?????}
function circle_point($degrees,$diameter)
?????{
?????$x=cos(radians($degrees))*($diameter/2);
?????$y=sin(radians($degrees))*($diameter/2);
?????return (array($x,$y));
?????}
?????????????>
###########
这是一个调用的例子
###########
include("bfunc.php3");
$chartdiameter=250;
?????$chartfont=5;
?????$d1=10;$d2=20;$d3=30;$d4=40;$d5=50;
?????$chartdata=array($d1,$d2,$d3,$d4,$d5);
?????$chartlabel=array("D1","D2","D3","D4","D5");
?????$colorbody=array(0xff,0xff,0xff);
?????$colorborder=array(0x00,0x00,0x00);
?????$colortext=array(0xff,0xff,0xff);
?????$color1=array(0xff,0x00,0x00);
?????$color2=array(0x00,0xff,0x00);
?????$color3=array(0x00,0x00,0xff);
?????$color4=array(0xff,0xff,0x00);
?????$color5=array(0xff,0x00,0xff);
?????$colorslice=array($color1 ,$color2,$color3,$color4,$color5);
$file="tj.gif"
bimage($chartdata,
???????$chartfont,
???????$chartdiameter ,
???????$chartlabel ,
???????$colorslice,
???????$colorbody ,
???????$colorborder,
???????$colortext ,
???????$file???????)
?>
【奥索网版权所有,如需转载,请注明出处】????
Tags:  php日期函数 php函数手册 php时间函数 php数组函数 php函数

延伸阅读

最新评论

发表评论