在调查程序中,我们需要根据统计的数据来 生成各种图表来生动的表示调查的百分比 。在php在这方面也是不负众望,它中可以通过加载gd库来实现一开始。饼状图表对于查看一个值占总值的百分比是一个好的方法。现在我们就用php来实现一个饼形图表,给大家讲述php在这方面的应用。它的设计思想是:首先以用imagecreate()来生成一个空白图形,然后在空白图形中用imageare()圆弧函数先画圆弧,再画两条线连接圆心和圆弧端点(php图像函数不能画扇形),再用imagefilltoborder函数来填充扇形。其程序实现如下: $#@60;?php
/*把角度转换为弧度*/function radians ($degrees) {return($degrees * (pi()/180.0));}/*** 取得在圆心为(0,0)圆上 x,y点的值*/function circle_point($degrees, $diameter) {$x = cos(radians($degrees)) * ($diameter/2);$y = sin(radians($degrees)) * ($diameter/2);
return (array($x, $y));}// 填充图表的参数$chartdiameter = 200; //图表直径$chartfont = 2; //图表字体$chartfontheight = imagefontheight($chartfont);//图表字体的大小$chartdata = array( “75”,”45″);//用于生成图表的数据,可通过数据库来取得来确定//$chartlabel = array(“yes”, “no”); //数据对应的名称
//确定图形的大小$chartwidth = $chartdiameter + 20;$chartheight = $chartdiameter + 20 +(($chartfontheight + 2) * count($chartdata));
//确定统计的总数for($index = 0; $index $#@60; count($chartdata); $index++){$charttotal += $chartdata[$index];}
$chartcenterx = $chartdiameter/2 + 10;$chartcentery = $chartdiameter/2 + 10;
//生成空白图形$image = imagecreate($chartwidth, $chartheight);
//分配颜色$colorbody = imagecolorallocate($image, 0xff, 0xff, 0xff);$colorborder = imagecolorallocate($image, 0x00, 0x00, 0x00);$colortext = imagecolorallocate($image, 0x00, 0x00, 0x00);
$colorslice = imagecolorallocate($image, 0xff, 0x00, 0x00);$colorslice[] = imagecolorallocate($image, 0x00, 0xff, 0x00);
//填充背境imagefill($image, 0, 0, $colorbody);
/*** 画每一个扇形*/$degrees = 0;for($index = 0; $index $#@60; count($chartdata); $index++){$startdegrees = round($degrees);$degrees += (($chartdata[$index]/$charttotal)*360);$enddegrees = round($degrees);
$currentcolor = $colorslice[$index%(count($colorslice))];
//画图fimagearc($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);}
本新闻共2页,当前在第1页 1 2
//画边框imagearc($image, $chartcenterx, $chartcentery,$chartdiameter, $chartdiameter, 0, 180, $colorborder);
imagearc($image, $chartcenterx, $chartcentery,$chartdiameter, $chartdiameter, 180, 360, $colorborder);imagearc($image, $chartcenterx, $chartcentery,$chartdiameter+7, $chartdiameter+7, 0, 180, $colorborder);
imagearc($image, $chartcenterx, $chartcentery,$chartdiameter+7, $chartdiameter+7, 180, 360, $colorborder);
imagefilltoborder($image, floor($chartcenterx + ($chartdiameter/2) + 2), $chartcentery, $colorborder, $colorborder);
//画图例for($index = 0; $index $#@60; count($chartdata); $index++){$currentcolor = $colorslice[$index%(count($colorslice))];$liney = $chartdiameter + 20 + ($index*($chartfontheight+2));
//draw color boximagerectangle($image, 10, $liney, 10 + $chartfontheight, $liney+$chartfontheight, $colorborder);
imagefilltoborder($image, 12,$liney + 2, $colorborder,$currentcolor);
//画标签imagestring($image,$chartfont,20 + $chartfontheight,$liney, “$chartlabel[$index]: $chartdata[$index]”,$colortext);}
//到此脚本 已经生了一幅图像的,现在需要的是把它发到浏览器上,重要的一点是要将标头发给浏览器,让它知道是一个gif文件。不然的话你只能看到一堆奇怪的乱码
header(“content-type: image/gif”);//输出生成的图片imagegif($image);?$#@62;保存为chart.php,运行程序其结果如图1.但这是在服务器端生在gif图片,我们要在html文件中应用就需要如下格式来调用它:$#@60;?phpecho “$#@60;img src=chart.php $#@62; “?$#@62;
注:运行环境为apache_1_3_12+php-4.0rc1+win98,windows平台下. 在php中图像函数都是在gd库中完成,gd库实际是处理gif格式的免费软件。要加载gd扩展才能使用php4的gd库可以到www.phpuser.com下载。解压copy php_gd.dll文件到php的执行目录,然后编辑php.ini配置文件,找到配置文件中;extension=php_gd.dll”这行 去掉”;”号,如果没有发现则在配置文件的dynamic extensions 后增加一行extension=php_gd.dl。最后运行phpinfo()函数,你就可以看到支持信息。
本新闻共2页,当前在第2页 1 2
http://www.bkjia.com/phpjc/532657.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/532657.htmltecharticle在调查程序中,我们需要根据统计的数据来 生成各种图表来生动的表示调查的百分比 。在php在这方面也是不负众望,它中可以通过加载g…