做程序开发的基本都会要接触到做数据分析统计这种功能,比如将一堆枯燥的统计数据转变为更为直观的柱状统计图等。下面作者将要和大家分享一下如何利用php生成柱状统计图。
先贴一下这个php程序生成的柱状统计图的效果图:
该程序的具体代码如下:
<?php $data=array("1"=>100,"2"=>30,"3" =>21,4=>'165',5=>'182'); createImage($data,40,40,300); /* * author http://php.hhsy.cc/ * php生成柱状统计图程序 * $data 二维数组形式的数据 * $twidth 柱形宽度 * $tspace 两个柱形之间的距离 * $height 柱状图的高度 */ function createImage($data,$twidth,$tspace,$height){ header("Content-Type:image/jpeg"); $dataname=array(); $datavalue=array();//data里面的值 $i=0; $j=0; $k=0; $num=sizeof($data); foreach($data as $key=>$val){ $dataname[]=$key; $datavalue[]=$val; } $width=$num*($twidth+$tspace)+100 ;//获取图像的宽度 $im=imagecreate($width,$height);//创建图像 $bgcolor=imagecolorallocate($im,255,255,255);//背景色 $jcolor=imagecolorallocate($im,255,0,0);//矩形的背景色 $acolor=imagecolorallocate($im,0,0,0);//线的颜色 imageline($im,25,$height-20,$width-5,$height-20,$acolor);//X轴 imageline($im,25,$height-20,25,2,$acolor);//Y轴 while($i<$num){ imagefilledrectangle($im,$i*($tspace+$twidth)+40,$height-$datavalue[$i]-20,$i*($twidth+$tspace)+$tspace+40,$height-21,$jcolor);//画矩形 imagestring($im,3,$i*($tspace+$twidth)+40+$twidth/2,$height-$datavalue[$i]-35,$datavalue[$i],$acolor);//在柱子上面写出值 imagestring($im,3,$i*($tspace+$twidth)+40+$twidth/2,$height-15,$dataname[$i],$acolor);//在柱子下面写出值 $i++; } while($j<($height)/10){ imageline($im,25,($height-20)-$j*10,28,($height-20)-$j*10,$acolor);//画出刻度 imagestring($im,2,5,($height-30)-$j*10,$j*10,$acolor);//标出刻度值 $j=$j+10; } imagejpeg($im); }