# 用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);}

//画边框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()函数，你就可以看到支持信息。

http://www.bkjia.com/phpjc/532657.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/532657.htmltecharticle在调查程序中，我们需要根据统计的数据来 生成各种图表来生动的表示调查的百分比 。在php在这方面也是不负众望，它中可以通过加载g…

Posted in 未分类