円グラフ|関数
PHPの円グラフ関数
著者:qdlover発行日:2000年9月15日閲覧数:14回
------------------------------------- --- ---------------------------------------------- --- -
もう一度自己紹介をさせてください、笑
私は純粋に上司に対応するために PHP を勉強しましたが、突然の転職には慣れていませんでした。 PHP 関数 確かに非常に強力です (笑)、彼なしでは生きていけません。いいえ、円グラフや縦棒グラフは作成しましたが、まだわからないことがたくさんあります。さらにアドバイスをいただければ幸いです。たくさんくだらない話をしましたが、私の連絡先は次のとおりです。
######
bimage.php3
########
< ?
/*
関数の説明
$chartdata: 配列要素であるデータ
$chartfont: フォント サイズ
$chartdiameter : 円のサイズを決定します (お腹が空いているかどうかによります、笑)
$chartlabel: title 、配列要素でもあります
$colorslice: カラー配列、例: $tmp=array255,255,255);$colorslic=array($tmp);
$colorborder: 境界線の色、配列
$colortext: テキストの色、配列
$colorbody : 背景色、配列
$file: 出力画像ファイル名*/
function bimage($chartdata,
$chartlabel , d2=20;$d3=30;$d4=40;$d5=50;
$chartdata =array($d1,$d2,$d3,$d4,$d5);
$chartlabel=array("D1" ,"D2","D3","D4","D5"); $chartdiameter+20;
$chartheight=$chartdiameter+20+(($chartfontheight+2)*count($chartdata))
$image=imagecreate($) chartwidth,$chartheight);
$colorbody =imagecolorallocate ($image,$colorbody[0],$colorbody[1],$ colorbody[2]); colortext[1],$colortext[2]);
$colorborder =imagecolorallocate ($image,$colorborder[0],$colorborder[1],$colorborder[2]); ;count($colorslice);$i++)
{
$t=imagecolorallocate($image,$colorslice[$i][ 0],$colorslice[$i][1],$colorslice[$i][2] );
$colorslice[$i]=$t;
for($i=0;$ i
$startdegrees=round($degrees);
$degrees+=(($chartdata[$i]/$ charttotal)*360); =round($degrees);
$currentcolor=$colorslice[$i%(count($colorslice))];
imagearc($image,
$chartcenterx,
$ chartcentery,
$chartdiameter,
$chartdiameter、
$startdegrees、
$enddegrees、
$currentcolor);
list($arcx,$arcy)=circle_point($startdegrees,$chartdiameter);
imageline($image,
$chartcentery,
$chartcentery, floor($chartcenterx+$arcx),
floor($chartcentery+$arcy),
$currentcolor );
list($arcx,$arcy)=circle_point($enddegrees,$chartdiameter);
imageline($image,
$chartcentery,
$chartcentery, ceil($chartcenterx+$arcx)、
ceil($chartcentery +$arcy)、
$currentcolor);
$midpoint=round((($enddegrees-$startdegrees)/2)+$startdegrees);
list($arcx,$arcy)= Circle_point ( $midpoint, $chartdiameter/2);
imagefilltoborder($image,
floor($chartcenterx+$arcx),
floor($chartcenter) y+$arcy)、
$currentcolor、
$currentcolor);
}
imagearc($image,
$chartcentery,
$chartdiameter,
$chartcentery, chartdiameter、
0,360、
$colorborder);
imagefilltoborder ($image,
floor($chartcenterx +( $chartdiameter /2)+2),
$chartcentery 、
$colorborder、
$colorborder );
for ($i=0;$i
$currentcolor=$colorslice[$i%(count($colorslice))];
$liney=$chartdiameter+20+($i*($chartfontheight+2));
imagerectangle ($image,
10,
$liney,
20+$chartfontheight,
$liney+$chartfontheight,
$colorbody);
imagefilltoborder($image,
12,
$liney+2,
$colorbody,
$currentcolor);
imagestring($image,
$chartfont,
40+$chartfontheight,
$liney, "$chartlabel[$i]:$chartdata[$i]",
$colortext);
}
imagegif ($image,$file);
}
関数ラジアン($degrees)
{
return($degrees*(pi()/180.0));
}
関数circle_point($degrees,$diameter)
{
$x=cos(ラジアン($degrees))*($diameter/2);
$y=sin(ラジアン($度))*($直径/2);
return (array($x,$y));
}
?>
###########
これは使用例です
###########
include("bfunc.php3");
$チャート直径=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(0x00,0x00,0x00);
$colortext=array(0xff,0xff,0xff);
$color1=array(0xff,0x00,0x00);
$color2=配列(0x00,0xff,0x00);
$color3=配列(0x00,0x00,0xff);
$color4=配列(0xff,0xff,0x00);
$color5=配列(0xff,0x00,0xff);
$colorslice=array($color1 ,$color2,$color3,$color4,$color5);
$file="tj.gif"
bimage($chartdata,
$chartfont,
$chartdiameter ,
$chartlabel ,
$colorslice、
$colorbody、
$colorborder、
明ソース]