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

PHP中利用GD实现的柱状图,phpgd实现柱状图

程序员文章站 2022-05-10 11:14:53
...

PHP中利用GD实现的柱状图,phpgd实现柱状图

PHP中利用GD实现的柱状图,自己写的一个画柱状图的类,上代码。

  1 php
  2  Class Chart{
  3     private $image; // 定义图像
  4     private $title; // 定义标题
  5     private $ydata; // 定义Y轴数据
  6     private $xdata; // 定义X轴数据
  7     private $color; // 定义条形图颜色
  8     private $bgcolor; // 定义图片背景颜色
  9     private $width; // 定义图片的宽
 10     private $height; // 定义图片的长
 11     
 12     /*
 13      * 构造函数 
 14      * String title 图片标题
 15      * Array xdata 索引数组,X轴数据
 16      * Array ydata 索引数组,数字数组,Y轴数据
 17      */
 18     function __construct($title,$xdata,$ydata) {        
 19         $this->title = $title;
 20         $this->xdata = $xdata;
 21         $this->ydata = $ydata;
 22         $this->color = array('#058DC7', '#50B432', '#ED561B', '#DDDF00', '#24CBE5', '#64E572', '#FF9655', '#FFF263', '#6AF9C4');
 23     }
 24     
 25     /*
 26      * 公有方法,设置条形图的颜色 
 27      * Array color 颜色数组,元素取值为'#058DC7'这种形式
 28      */
 29     function setBarColor($color){
 30         $this->color = $color;
 31     }
 32     
 33     /*
 34      * 公有方法,画条形图 
 35      */
 36     function mkBarChart(){
 37         $ydataNum = $this->arrayNum($this->ydata); // 取得数据分组的个数
 38         $max = $this->arrayMax($this->ydata); // 取得所有呈现数据的最大值
 39         $multi = ($max > 100)? $max/100 : 1; // 如果最大数据是大于100的则进行缩小处理,获取
 40         $barHeightMulti = 2.2; // 条形高缩放的比例
 41         $barWidth = (16 - 2*($ydataNum - 1)) > 10 ? (16 - 2*($ydataNum - 1)) : 10; // 条的宽
 42         $barSpace = 16; // 条之间的间距
 43         $chartLeft = (1+strlen($max))*12; // 设置图片左边的margin
 44         
 45         $barY = 250; // 初始化条形图的Y的坐标
 46         // 设置图片的宽、高
 47         $this->width = ($ydataNum*$barWidth + $barSpace)*count($this->xdata) + $chartLeft; 
 48         $this->height = 300; 
 49         $this->image = imagecreatetruecolor($this->width ,$this->height); // 准备画布
 50         $this->bgcolor = imagecolorallocate($this->image,255,255,255); // 图片的背景颜色
 51         
 52         // 设置条形图的颜色
 53         $color = array();
 54         foreach($this->color as $col) {
 55             $col = substr($col,1,strlen($col)-1);
 56             $red = hexdec(substr($col,0,2));
 57             $green = hexdec(substr($col,2,2));
 58             $blue = hexdec(substr($col,4,2));
 59             $color[] = imagecolorallocate($this->image ,$red, $green, $blue);
 60         }
 61         
 62         // 设置线段的颜色、字体的颜色、字体的路径
 63         $lineColor = imagecolorallocate($this->image ,0xcc,0xcc,0xcc);
 64         $fontColor = imagecolorallocate($this->image, 0x95,0x8f,0x8f);
 65         $fontPath = 'font/simsun.ttc';
 66         
 67         imagefill($this->image,0,0,$this->bgcolor); // 绘画背景
 68         
 69         // 绘画图的分短线与左右边线
 70         for($i = 0; $i $i
相关标签: 柱状图