|
|
|
用PHP制作饼图调查表 |
热 ★★★★ |
|
用PHP制作饼图调查表 |
|
作者:闵涛 文章来源:闵涛的学习笔记 点击数:512 更新时间:2009/4/23 11:02:15 |
|
在调查程序中,我们需要根据统计的数据来 生成各种图表来生动的表示调查的百分比 。在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))];
//画图F 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, 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 box imagerectangle($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;?php echo "$#@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()函数,你就可以看到支持信息。
没有相关教程
|
|
教程录入:mintao 责任编辑:mintao |
|
|
上一篇教程: PHP安装攻略:常见问题解答(一) 下一篇教程: 用Session对Web页面进行保护 |
|
|
【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
|
注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网] |
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
|
|
|
|
|
|
|
同类栏目 |
|
|
赞助链接 |
|
|
500 - 内部服务器错误。
|
|
|
|
|
|