ホームページ  >  記事  >  php教程  >  円グラフを示します。ヒストグラムを描画し、img を使用してその幅と高さを制御するだけです。

円グラフを示します。ヒストグラムを描画し、img を使用してその幅と高さを制御するだけです。

WBOY
WBOYオリジナル
2016-06-21 09:05:04990ブラウズ

円グラフ|コントロール

//呼び出しメソッド:
//chart.php はこの記事のファイル名です


/*
角度をラジアンに変換します
*/
function radians ($ 度)
{
return($degrees * (pi()/180.0));
}
/*
** 中心が (0, 0) である円上の x、y 点の値を取得します
*/
functioncircle_point ($degrees, $diameter)
{
$x = cos(ラジアン($degrees)) * ($diameter/2);
$y = sin(ラジアン($degrees)) * ($diameter /2);

return (array($x, $y));
}
//チャートのパラメータを入力します
$ChartDiameter = 200; //チャートの直径
$ChartFont = 2; //チャートのフォント
; $ChartFontHeight = imagefontheight($ChartFont );//チャートのフォント サイズ

require('mysql.php3');
$sql=new mysql_class;
$sql->create('star');
$sql-> ;query("select * from serch whereanswer='Fujitsu Hao Jiudan'");
$record1=$sql->rows;
$sql->query("select * from serch whereanswer='Fujitsu Cho Hsun' -hyun Jiudan'");
$ Record2=$sql->rows;

$ChartData = array($record1,$record2);// チャートの生成に使用されるデータは、それを取得することで決定できますデータベースから
//$ChartLabel = array("Chang Hao Jiuduan ", "Cao Xunxuan Jiuduan") //データに対応する名前

//グラフィックのサイズを決定します
$ChartWidth = $ChartDiameter + 20 ;
$ChartHeight = $ChartDiameter + 20 +
(($ChartFontHeight + 2) * count ($ChartData));

//統計の合計数を決定します
for($index = 0; $index < count( $ChartData); $index++)
{
$ChartTotal += $ChartData[$index];
}

$ChartCenterX = $ChartDiameter/2 + 10;
$ChartCenterY = $ChartDiameter/2 + 10;


/ /空白のグラフィックを生成
$image = imagecreate($ChartWidth, $ChartHeight);

//色の割り当て
$colorBody = imagecolorallocate($image, 0xe4, 0xe6, 0xd1);
$colorBorder = imagecolorallocate($image, 0x00, 0x00, 0x00);
$colorText = imagecolorallocate($image, 0x00, 0x00, 0x00);

$colorSlice[] = imagecolorallocate($image, 0xFF, 0x00, 0x00);
$colorSlice[] = imagecolorallocate($image , 0x00, 0x00, 0xFF);


//背景を塗りつぶす
imagefill($image, 0, 0, $colorBody);


/*
** 各セクターを描画する
*/
$Degrees = 0;
for($index = 0; $index < count($ChartData); $index++)
{
$StartDegrees =round($Degrees);
$Degrees += (($ChartData[$index]/$ChartTotal) *360);
$EndDegrees =round($Degrees);

$CurrentColor = $colorSlice [$index%(count($colorSlice))];

//F
imagearc($image,$ChartCenterX,$ を描画) ChartCenterY,$ChartDiameter,
$ChartDiameter,$StartDegrees,$EndDegrees, $CurrentColor);

//直線を描く
list($ArcX, $ArcY) = Circle_point($StartDegrees, $ChartDiameter);
imageline($ image,$ChartCenterX,$ChartCenterY,floor($ChartCenterX + $ArcX),
floor($ChartCenterY + $ArcY),$CurrentColor);
//直線を描く
list($ArcX, $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);
imagefilltoborder($image,floor( $ChartCenterX + $ArcX),floor($ChartCenterY + $ArcY),
$CurrentColor,$CurrentColor);
}

//境界線を描画します
imagearc($image,
$ChartCenterX,
$ChartCenterY,
$ChartDiameter) 、
$ChartDiameter,
0,
180,
$colorBorder);

imagearc($image,
$ChartC enterX,
$ChartCenterY,
$ChartDiameter,
$ChartDiameter,
180,
360,
$colorBorder) ;


imagearc($ image、
$ chartcenterx、
$ chartcentery、
$ chartdiameter+7、
$ chartdiameter+7、
0、
180、
$ colorborder); ,
$ChartCenterY,
$ChartDiameter+7,
$ChartDiameter+7,
180,
360,
$colorBorder) ;


imagefilltoborder($image,
floor($ChartCenterX + ($ChartDiameter/2) + 2) ),
$ChartCenterY,
$colorBorder,
$colorBorder);


//凡例を描画します
for($index = 0; $index < count($ChartData); $index++)
{
$CurrentColor = $colorSlice[$index%(count($colorSlice))];
$LineY = $ChartDiameter + 20 + ($index*( $ChartFontHeight+2));

//カラー ボックスを描画します
imagerectangle($image,
) 10,
$LineY,
10 + $ChartFontHeight,
$LineY+$ChartFontHeight,
$colorBorder);

imagefilltoborder($image ,
12,
$LineY + 2,
$colorBorder,
$CurrentColor);

// ラベルを描画します
imagestring($image,
$ChartFont,
20 + $ChartFontHeight,
$LineY,
"$ChartData[$index]",
$colorText);
}

//この時点で、スクリプトは画像をブラウザーに送信する必要があります。重要なのは、それを送信することです。ブラウザはそれが GIF ファイルであることを認識します。そうしないと、奇妙な文字化けが大量に表示されるだけです

header("Content-type: image/gif");
//生成された画像を出力します
imagegif($image);
?>



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。