>您现在的位置:诗歌赏析 > 现代文学

打造超酷的PHP数据饼图-PHP代码-PHP教程-幽默笑话

2019-07-08 15:15作者:admin

打造超酷的PHP数据饼图-PHP代码-PHP教程-幽默笑话

文章内容打造超酷的PHP数据饼图修改时间:[2012/04/0315:55]阅读次数:[954]发表者:[起缘]源代码://+------------------------+//|//公用函数|//+------------------------+define(ANGLE_STEP,5);//定义画椭圆弧时的角度步长functiondraw_getdarkcolor($img,$clr)//求$clr对应的暗色{$rgb=imagecolorsforindex($img,$clr);returnarray($rgb[red]/2,$rgb[green]/2,$rgb[blue]/2);}functiondraw_getexy($a,$b,$d)//求角度$d对应的椭圆上的点坐标{$d=deg2rad($d);returnarray(round($a*Cos($d)),round($b*Sin($d)));}functiondraw_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$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;}}functiondraw_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$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);}functiondraw_sector3d($img,$ox,$oy,$a,$b,$v,$sd,$ed,$clr)//3d扇面{draw_sector($img,$ox,$oy,$a,$b,$sd,$ed,$clr);if($sd180){list($R,$G,$B)=draw_getdarkcolor($img,$clr);$clr=imagecolorallocate($img,$R,$G,$B);if($ed180)$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);}}functiondraw_getindexcolor($img,$clr)//RBG转索引色{$R=($clr16)0xff;$G=($clr8)0xff;$B=($clr)0xff;returnimagecolorallocate($img,$R,$G,$B);}//绘图主函数,并输出图片//$datLst为数据数组,$datLst为标签数组,$datLst为颜色数组//以上三个数组的维数应该相等functiondraw_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$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$i++)$tot+=$datLst[$i];$sd=0;$ed=0;333$ly=10+$b*2+$v;for($i=0;$i$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,./,$str.:.$datLst[$i].(.(round(10000*($datLst[$i]/$tot))/100).%));$ly+=$fh+2;}//输出图形header(Content-type:image/png);//输出生成的图片$imgFileName=../temp/.time()..pngimagepng($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);。

随机推荐

图文聚集

热门排行

最新文章