说明:
简易PHP柱状图。
效果:
PHP柱状图示例
用法:
include('histogram.php'); // 将代码包含进来
header("content-type:image/png");
$data = array(
"雅虎" => 120,
"谷歌" => 260,
"微软" => 320,
"IBM" => 290,
"Sun System" => 150,
"Intel" => 260
);
histogram($data,30,20,360); // 输出柱状图
?>
下载:
代码:
// 柱状图生成类,支持中文。
// $dateArray数据
// $twidthInt单个柱的宽度
// $tspaceInt柱间间隔
// $heightInt纵坐标高度
function histogram($data,$twidth,$tspace,$height){
//中文字体文件
$fontFile = 'msyh.ttf';
$dataName = array();
$dataValue = array();
$i = 0;
$j = 0;
$k = 0;
$num = sizeof($data);
foreach($data as $key => $val){
$dataName[] = $key;
$dataValue[] = $val;
}
$maxnum = max($data);
$width = ($twidth + $tspace) * $num + 4;//image's width
$im = imagecreate($width + 40,$height+20);
$lineColor = imagecolorallocate($im,12,12,12);
$bgColor = imagecolorallocate($im,235,233,233);
$tColor = imagecolorallocate($im,123,200,56);
imagefill($im,0,0,$bgColor);
//垂直坐标线
imageline ( $im, 30, 0, 30, $height - 2, $lineColor);
//水平坐标线
imageline ( $im, 30, $height - 2, $width + 30 + 2 , $height - 2,$lineColor);
while($i < $num){
//填充矩形,坐标从左上到右下
imagefilledrectangle ( $im, $i * ($tspace+$twidth) + 40, $height - $dataValue[$i], $i * ($tspace+$twidth) + 40 + $twidth, $height - 3, $tColor);
//垂直写一行文字(背景,字体大小,倾斜角度,坐标X,坐标Y,字体文件,写入的文字内容)(imagestringup函数不支持中文)
imagettftext($im,11,90,$i * ($tspace+$twidth) + $twidth/2 + 30 + (15), $height - 10,$lineColor,$fontFile,$dataName[$i]."(".$dataValue[$i].")");
$i++;
}
while($j <= (500/10)){
imagestringup ( $im, 4, 2, $height - $j * 10 + 10, $j * 10, $lineColor);
$j = $j + 10;
}
while($k <= (500/10)){
if($k != 0)
imageline ( $im, 28, $height - $k * 10, 32 , $height - $k * 10,$lineColor);
$k = $k + 10;
}
imagepng($im);
}
?>