×

php实现饼状图

php实现饼状图(pyecharts 饼图)

admin admin 发表于2023-03-26 11:27:06 浏览50 评论0

抢沙发发表评论

本文目录一览:

怎么不安装类库用php画曲线图和饼图?

php本身没有画图功能。都是通过GD库等外部扩展实现的。如果只是单纯的曲线图和饼图,可以考虑使用前端js代码实现,比如iChart等插件都能做出很漂亮的示意图。比GD搞出来的要漂亮,而且是动态的,可以根据点击进行交互。

北大青鸟java培训:PHP中使用GD库创建圆形饼图?

在php中,有一些简单的图像函数是可以直接使用的,但大多数要处理的图像,都需要在编译PHP时加上GD库。

除了安装GD库之外,在PHP中还可能需要其他的库,广西电脑培训认为这可以根据需要支持哪些图像格式而定。

不同的GD版本支持的图像格式不完全一样,最新的GD库版本支持GIF、JPEG、PNG、WBMP、XBM等格式的图像文件,此外还支持一些如FreeType、Type1等字体库。

通过GD库中的函数,可以完成各种点、线、几何图形、文本及颜色的操作处理,也可以创建或读取多种格式的图像文件。

在PHP中,通过GD库处理图像的操作都是先在内存中处理,操作完成以后再以文件流的方式输出到浏览器或保存在服务器的磁盘中。

创建一个图像应该完成如下所示4个基本步骤。

①创建画布:所有的绘图设计都需要在一个背景图片上完成,而画布实际上就是在内存中开辟的一块临时区域,用于存储图像的信息。

以后的图像操作都将基于这个背景画布,该画布的管理就类似于我们在画画时使用的画布。

②绘制图像:画布创建完成以后,就可以通过这个画布资源,使用各种画像函数设置图像的颜色、填充画布、画点、线段、各种几何图形,以及向图像中添加文本等。

③输出图像:完成整个图像的绘制以后,需要将图像以某种格式保存到服务器指定的文件中,或将图像直接输出到浏览器上显示给客户。

但在图像输出之前,一定要使用header()函数发送Content-type通知浏览器,这次发送的是图片不是文本。

④释放资源:图像被输出以后,画布中的内容也不再有用。

出于节约系统资源的考虑,需要及时清楚画布占用的所有内存资源。

我们先来了解一下一个非常简单的创建图像脚本。

在下面的脚本文件image.php中,按前面介绍的绘制图像的四个步骤,使用GD库动态输出一个扇形统计图。

php三维饼图怎么做?要调入数据库的数据!请高手指点!不会的别来混经验!

这是个2D的。

其中有一个自定义函数,用于绘制饼图,参数是一个键值对数组。

每项内容是由数组定义的。你调入数据库中的内容后读入数组即可。

前提是你当然要开启GD扩展,要不是没得画得。呵。

?php

function pie2d($a) //创建自定义函数

{

$im=imagecreate(420,300); //建立图像

$back=imagecolorallocate($im,255,255,200); //背景色

$color[]=imagecolorallocate($im,0,0,255); //定义10个颜色,可以最多处理10项

$color[]=imagecolorallocate($im,255,0,0);

$color[]=imagecolorallocate($im,0,255,0);

$color[]=imagecolorallocate($im,100,100,255);

$color[]=imagecolorallocate($im,255,0,255);

$color[]=imagecolorallocate($im,150,0,0);

$color[]=imagecolorallocate($im,0,0,150);

$color[]=imagecolorallocate($im,0,150,0);

$color[]=imagecolorallocate($im,0,0,0);

$color[]=imagecolorallocate($im,150,150,150);

$value_a=array_values($a); //获取参数数组所有值到新数组

$all=array_sum($value_a); //统计新数组的和

$i=0; //循环标记

foreach($a as $key=$value) //遍历数组

{

$angle[]=$value/$all*360; //获取当前角度

$str=$key.":".round($value/$all*100,2)."%"; //需要输出的内容

imagestring($im,5,10,($i*20+10),$str,$color[$i]); //画字符串

$i++; //标记自增

}

$s=0; //当前角度标记

$i=0;

foreach($angle as $temp) //遍历所有项角度

{

imagefilledarc($im,285,150,240,120,$s,($s+$temp),$color[$i],4); //画椭圆弧

//imagefillellipse();

$s=$s+$temp; //角度增加为当前角度

$i++;

}

imagepng($im); //输出PNG

imagedestroy($im); //销毁图像

}

$arr=array(

"perfect"=1,

"excellent"=2,

"very good"=4,

"good"=1,

"not bad"=1,

"normal"=1,

"bad"=1,

"very bad"=1,

"god save me"=1,

"hell"=1

); //定义数组,数组内容为选项内容与选项数量的键值对

$re=pie2d($arr); //调用自定义函数

?