php扇形分布图,使用php绘制扇形分布图

首先创建一个表单提交的页面,并且使用session会话的方式,将表单提交的值保存到session会话中,表单页面的代码我就不写了,获取到值以后对数据进行处理,然后绘制成图:

具体绘制与数据处理代码:

session_start();

//将保存在session会话中值提取出来,保存到szz数组中

$sz =

array(@$_SESSION['zs'],@$_SESSION['ls'],@$_SESSION['le'],@$_SESSION['ld'],@$_SESSION['ww']);

//创建画布

$im =

imagecreatetruecolor(400, 400);

//创建五个颜色,用于每个扇形区域

$a =

imagecolorallocate($im, 255, 0, 0);

$b =

imagecolorallocate($im, 0, 255, 0);

$c =

imagecolorallocate($im, 0, 0, 255);

$d =

imagecolorallocate($im, 255, 255, 0);

$e =

imagecolorallocate($im, 255, 0, 255);

//创建一个黑色的颜色(根据需要使用其他颜色),用于扇形上文字的显示

$black =

imagecolorallocate($im, 0, 0, 0);

//将五个颜色保存到数组中

$ys =

array($a,$b,$c,$d,$e);

//定义一个变量,用于保存得到数据的总和

$sum = 0;

for($i = 0; $i

< 5; $i ++){

$sum += $sz[$i];

}

//将每个姓名保存到这个数组中

$tx =

array("张三","李四","刘二","刘大","王五");

//将每个用户所在的百分比保存到数组中

$bf =

array((int)($sz[0]/$sum*100),(int)($sz[1]/$sum*100),(int)($sz[2]/$sum*100),(int)($sz[3]/$sum*100),(int)($sz[4]/$sum*100));

$angle = 0;//扇形转动的角度

$temp = 0;

//保存每一个扇形区域中间位置的角度(相对于x正半轴)

for($i = 0; $i

< 5; $i ++){

//每循环一次就将当前扇形区域的中间角度保存

$temp = (($sz[$i]/$sum)*360)/2 + $angle;

//绘制扇形/圆/椭圆

//imagefilledarc(resource image,int cx,int cy,int width,int

height,int start,int end,int color,int style);

//参数说明:

//image:上面创建的画布对象

//cx、cy:圆心坐标

//width、height:水平距离,垂直距离,当这两个值相同时为圆,不同是为椭圆

//start、end:绘制的开始角度,绘制的结束角度(按顺时钟绘制,开始位置是x轴的正半轴)

//color:颜色(也可以是绘制线的颜色,也可以是填充色,看最后一个属性)

imagefilledarc($im,200,200,300,300,$angle,$angle

+ ($sz[$i]/$sum)*360,$ys[$i],IMG_ARC_PIE);

//图片上面的字体

//imagettftext(resource image,float size,float

angle,int x,int y,int color,string font_file,string text);

//参数说明:

//image:上面创建的画布对象

//size:字体大小

//angle:转动的角度(按逆时针旋转)

//x、y:字体显示的左上角坐标

//color:文字颜色

//font_file:文字样式的路径(一般在电脑C磁盘下的windows下的font文件夹下)

//text:显示的文本

imagettftext($im, 15, -($temp), 200 +

50*cos($temp/180*pi()), 150 + 50*sin($temp/180*pi()), $black,

"C:/Windows/Fonts/simkai.ttf", $tx[$i]." ".$bf[$i]."%");

$angle += ($sz[$i]/$sum)*360;

}

header('content-type:image/jpeg');

imagejpeg($im);

效果图:

填写图片摘要(选填)

效果图:

a4c26d1e5885305701be709a3d33442f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值