欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP中用GD绘制饼图,gd绘制饼_PHP教程

程序员文章站 2022-06-05 20:01:03
...

PHP中用GD绘制饼图,gd绘制饼

PHP中用GD绘制饼图,绘制的类见代码:

  1 Class Chart{
  2     private $image; // 定义图像
  3     private $title; // 定义标题
  4     private $ydata; // 定义Y轴数据
  5     private $xdata; // 定义X轴数据
  6     private $color; // 定义条形图颜色
  7     private $bgcolor; // 定义图片背景颜色
  8     private $width; // 定义图片的宽
  9     private $height; // 定义图片的长
 10     
 11     /*
 12      * 构造函数 
 13      * String title 图片标题
 14      * Array xdata 索引数组,X轴数据
 15      * Array ydata 索引数组,数字数组,Y轴数据
 16      */
 17     function __construct($title,$xdata,$ydata) {        
 18         $this->title = $title;
 19         $this->xdata = $xdata;
 20         $this->ydata = $ydata;
 21         $this->color = array('#058DC7', '#50B432', '#ED561B', '#DDDF00', '#24CBE5', '#64E572', '#FF9655', '#FFF263', '#6AF9C4');
 22     }
 23     
 24     /*
 25      * 公有方法,设置条形图的颜色 
 26      * Array color 颜色数组,元素取值为'#058DC7'这种形式
 27      */
 28     function setBarColor($color){
 29         $this->color = $color;
 30     }
 31     
 32     /*
 33      * 绘制饼图
 34      */
 35     function mkPieChart() {
 36         $sum = array_sum($this->ydata); // 获取ydata所有元素之和
 37         $start = 0; // 弧的开始角度
 38         $end = 0; // 弧的结束角度
 39         $pieWidth =  300; // 椭圆的长轴
 40         $pieHeight = 220; // 椭圆的短轴
 41         $space = 40; // 椭圆与小矩形的间距
 42         $margin = 20; // 图片的边距
 43         $recWidth = 20; // 小矩形的宽
 44         $recHeight = 15; // 小矩形的高
 45         $titleHeight = 50; // 标题区域的高
 46         // 图片自适应宽与高
 47         $this->width = $pieWidth + $this->arrayLengthMax($this->xdata)*10*4/3 + $space + $recWidth +$margin;
 48         $this->height =  (($pieHeight > count($this->xdata)*25 ) ? $pieHeight : count($this->xdata)*25) + $titleHeight;
 49         // 椭圆中心的坐标
 50         $cx = $pieWidth/2+$margin;
 51         $cy = $pieHeight/2+$titleHeight;
 52         
 53         $this->image = imagecreatetruecolor($this->width ,$this->height); // 准备画布
 54         $this->bgcolor = imagecolorallocate($this->image,255,255,255); // 图片的背景颜色
 55         imagefill($this->image,0,0,$this->bgcolor); // 填充背景
 56         
 57         // 设置条形图的颜色
 58         $color = array();
 59         foreach($this->color as $col) {
 60             $col = substr($col,1,strlen($col)-1);
 61             $red = hexdec(substr($col,0,2));
 62             $green = hexdec(substr($col,2,2));
 63             $blue = hexdec(substr($col,4,2));
 64             $color[] = imagecolorallocate($this->image ,$red, $green, $blue);
 65         }
 66         
 67         // 设置线段的颜色、字体的颜色、字体的路径
 68         $lineColor = imagecolorallocate($this->image ,0xcc,0xcc,0xcc);
 69         $fontColor = imagecolorallocate($this->image, 0x95,0x8f,0x8f);
 70         $fontPath = 'font/simsun.ttc';
 71         
 72         // 绘制扇形弧 
 73         for($i = 0; $i $i
相关标签: 类库