ホームページ >バックエンド開発 >PHPチュートリアル >円グラフを作成するPHP関数_PHPチュートリアル
########
bimage.php3
########
/*
関数の説明
$chartdata: 配列要素であるデータ
$chartfont: フォント サイズ
$chartdiameter: を決定しますパイのサイズ (お腹が空いているかどうかによります、笑)
$chartlabel: タイトル、配列要素でもあります
$colorslice: カラー配列、例: $tmp=array255,255,255);$colorslic=array($tmp );
$colorborder: 境界線の色、配列
$colortext: テキストの色、配列
$colorbody: 背景色、配列
$file: 出力画像ファイル名*/
function bimage($chartdata,
$chartfont,
$chartdiameter 、
$ chartlabel、$ colorslice、
$ color -border、
$ colortext
{
$ chartdiameter = 150; ;$d2=20;$d3=30;$d4=40;$d5=50;
$chartdata=array($d1,$d2,$d3,$d4,$d5); D1","D2", "D3","D4","D5");
$chartwidth=$chartdiameter+20;
$chartheight=$chartdiameter+20+(($chartfontheight+2)*count($chartdata) ));
header(" content-type:image/gif");
$image=imagecreate($chartwidth,$chartheight);
$colorbody =imagecolorallocate ($image,$colorbody[0],$colorbody[1]) ,$colorbody[2]) ;
$colortext =imagecolorallocate ($image,$colortext[0],$colortext[1],$colortext[2]); ,$colorborder[1], $colorborder[2]);
for ($i=0;$i
{
$t=imagecolorallocate($image,$colorslice[$i][0],$colorslice[$i)] ][1],$colorslice[$i][2]);
$colorslice[$i]=$t;
for($i=0;$i
{
$charttotal+=$chartdata[$i] ];
}
$chartcentery=$chartdiameter/2+10;
for($i=0;$i
$startdegrees=round( $度);
$度+ =(($chartdata[$i]/$charttotal)*360);
$currentcolor=$colorslice[$i%($colorslice); )];
imagearc($ image ,
$chartcentery,
$chartdiameter,
$chartdiameter,
$startdegrees,
$enddegrees,
$currentcolor); $startdegrees,$chartdiameter);
$chartcenterx,
$chartcentery,
floor($chartcentery+$arcy),
$currentcolor ); $arcy)=circle_point($ enddegrees,$chartdiameter);
imageline($image,
$chartcenterx,
$chartcentery,
ceil($chartcenterx+$arcx),
ceil($chartcentery +$arcy),
$currentcolor );
$midpoint=round((($enddegrees-$startdegrees)/2)+$startdegrees);
list($arcx,$arcy)=circle_point ($midpoint, $chartdiameter/2); image,
floor($chartcenterx+ $arcx),
floor($chartcentery+$arcy),
$currentcolor,
$currentcolor)
}
imagearc($image,
$chartcenterx,
$chartcentery,
$chartdiameter,
) $chartdiameter,
0,360,
$colorborder);
imagefilltoborder ($image,
floor($chartcenterx +( $chartdiameter /2)+2),
$chartcentery ,
$colorborder,
$colorborder ); i=0;$i
{
$currentcolor=$colorslice[$i%(count($colorslice))]
$liney=$chartdiameter+20+($i*($chartfontheight+2)); ($image,
10,
$liney,
20+$chartfontheight,
$liney+$chartfontheight,
$colorbody); );
imagestring($image ,
$chartfont,
40+$chartfontheight,
$liney,
"$chartlabel[$i]:$chartdata[$i]",
$colortext); ($image,$file) ;
}
関数ラジアン($度)
return($度*(pi()/180.0))
}
関数circle_point($度,$直径)
{
$x=cos(ラジアン($度))*($直径/2);
$y=sin(ラジアン($度))*($直径/2);
return (array($x,$y); ));
} >
###########
include("bfunc.php3" を呼び出す例です) ");
$chartdiameter= 250;
$chartfont=5;
$d1=10;$d2=20;$d3=30;$d4=40;$d5=50;
$chartdata=array($d1, $d2,$d3,$ d4,$d5);
$chartlabel=array("D1","D2","D3","D4","D5");
$colorbody=array(0xff,0xff) ,0xff);
$colorborder =array(0xff,0xff,0xff);
$color2=array(0xff,0xff,0xff); 0x00,0xff,0x00);
$color3=配列(0xff,0xff,0xff);
$colorslice= array($color1 ,$color2 ,$color3,$color4,$color5);
$file="tj.gif"
bimage($chartdata,
$chartfont,
$chartdiameter,
$chartlabel,
$colorslice,
) $colorbody、
$colorborder、
$colortext、
$file )
?>