php做饼图的函数
再介绍一下我自己,呵呵
我是个新手,当时学php纯粹是为了应付领导哦,让我们做统计图,我本来是学asp的,突然改行很不适应,不过php功能的确很强大呀,呵呵,我都离不了他了,这不,饼图,柱型图都搞定了,可是还有很多问题我不会,还希望大家多指教呀,说了好多废话了,我还以为是在写信那
我的联系方式是:
email:qingdaohb@yeah.net
http://qdlover.yeah.net
老板催了,没办法,饼图函数出炉了,大家快抢呀
######## bimage.php3 ######## /* 函数说明 $chartdata:数据,是数组元素 $chartfont:字号 $chartdiameter:决定饼的大小(要看你饿不饿了,呵呵) $chartlabel:标题,也是数组元素 $colorslice:颜色数组,例如$ tmp = array 255,255,255);$colorslic=array($tmp); $colorborder:边框颜色,数组 $colortext:文本颜色,数组 $colorbody:背景颜色,数组 $file:输出图片文件名*/ functionbimage($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 <count($colorslice);$i++) { $t=imagecolorallocate($image,$colorslice[$i][0],$colorslice[$i][1],$colorslice[$i][2]); $colorslice[$i]=$t; } for($i=0;$i<count($chartdata);$i++) { $charttotal+=$chartdata[$i]; } $chartcenterx=$chartdiameter/2+10; $chartcentery=$chartdiameter/2+10; $degrees=0; for($i=0;$i<count($chartdata);$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<count($chartdata);$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); } functionradians($degrees) { return($degrees*(pi()/180.0)); } functioncircle_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);
永久链接:http://www.phprm.com/code/6b9e36a0d5586d104e528dd949dc4b51.html
转载随意!带上文章地址吧。