phptest さん、レスありがとうございます。
良いサンプルは なかなか無いみたいなので、自分で書いちゃいました。ご参考にどうぞ:
<?php
header("Content-Type: image/png");
//グラフを作る領域を決める
$im = imagecreate(200, 200) or die("error!\n");
//グラフの背景色 $bg
$bg = imagecolorallocate($im, 0, 0, 0);
//領域を塗る色 $fg[]
$fg[0] = imagecolorallocate($im, 255, 255, 0);
$fg[1] = imagecolorallocate($im, 0, 255, 255);
$fg[2] = imagecolorallocate($im, 255, 0, 255);
$fg[3] = imagecolorallocate($im, 0, 255, 0);
//描画(線を描く)色 $cg
$cg = imagecolorallocate($im, 255, 255, 255);
//--------------------------------------------
//処理したいデータ:A=100,B=150,C=200,D=150
$idata = Array(100,150,200,150);
//--------------------------------------------
$isum = array_sum($idata);
$icount = count($idata);
//外側の円を描く
imagearc($im,100,100,150,150,0,360,$cg);
//スタートの区切り線(ゼロの線)を描く
$x0 = 100;
$y0 = 25;
imageline($im,100,100,$x0,$y0,$cg);
//データを読みながら、区切り線を描いてゆき、領域を塗る
for($i = 0; $i < $icount; $i++) {
$theta = $theta + $idata[$i] / $isum * 360;
$endx = 100 + (150 / 2) * sin($theta * 2 * 3.1416 / 360);
$endy = 100 - (150 / 2) * cos($theta * 2 * 3.1416 / 360);
imageline($im,100,100,$endx,$endy,$cg);
imagefilltoborder($im, ($x0 + $endx + 100)/3, ($y0 + $endy + 100)/3, $cg,$fg[fmod($i,4)]);
$x0 = $endx;
$y0 = $endy;
}
//メモリを解放
imagepng($im);
imagedestroy($im);
?>
お礼
ありがとうございました。 大変助かりました。