ホームページ >バックエンド開発 >PHPチュートリアル >ドーナツ チャート プログラムを生成する PHP ソリューション
PHP ドーナツ チャート生成プログラム
次のような PHP ドーナツ チャート生成プログラムはありますか?
-----解決策のアイデア---------- - -----------
画像を生成しますか、それとも Web ページに表示しますか?
単に Web ページに表示したい場合は、js を使用できます。 jqPlot や Highcharts などのチャート プラグインを使用します。
画像を生成したい場合は、jpGraph の使用を検討してください。必要なスタイルに対応したスタイルはないかな
自分で書くのは難しくないが、リンクごとの計算量が比較的多い
-----解決案- -------- -------------
php はサーバー側で実行され、データを提供するだけです。アイコンの表示には、次のような js の使用が必要です。上で Buzhu が言及したライブラリです。
--- ----解決策のアイデア---------------------
あなたは話しています円を描くPHPプログラムについて!私もあなたと同じようなことをしたことがあります!参考までに…このプログラムは参考用です。
//チャートを埋めるためのパラメータ
$ChartDiameter = 140; //チャートの直径
$ChartData = array(20,80);//チャートの生成に使用されるデータデータベースから取得して決定することも、色配列に対応するものが複数存在することもあります
$msg = '56%';
//角度をラジアンに変換します
関数 ラジアン($degrees){
return($degrees*(pi()/180.0));
}
//中心が (0, 0) の円上の x、y 点の値を取得します
関数circle_point($度,$直径){
$x=cos(ラジアン($度))*($直径/2);
$y=sin(ラジアン($度))*( $diameter/2);
return array($x,$y);
}
//グラフィックのサイズを決定します
$ChartWidth = $ChartDiameter 22;
$ChartHeight = $ChartDiameter 56;
/ /統計の合計数を決定します
$ChartTotal = '';
for($index = 0;$index < count($ChartData);$index ){
$ChartTotal = $ChartData[$index] ;
}
$ChartCenterX = $ChartDiameter/2 11;
$ChartCenterY = $ChartDiameter/2 28;
//空白のグラフィックを生成
$image = imagecreatetruecolor($ChartWidth, $ChartHeight );
//色の割り当て
$colorBody=imagecolorallocate($image,255,255,255);//白
$colorBorder=imagecolorallocate($image,0,0) ,0);
$colorText= imagecolorallocate($image, 0, 0, 0);
$colorSlice[] = imagecolorallocate($image, 255,255,255);//ここでは、作成した配列に対応する色を示します上記
$colorSlice[] = imagecolorallocate ($image, 241,120,129);//データ完成時の背景色
//$colorSlice[] = imagecolorallocate($image,0,0,0);//データ完成時の背景色
//背景を塗りつぶす
imagefill($image, 0, 0, $colorBody);
//各セクターを描画
$Degrees = 0;
for($index = 0; $index
$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);
//セクターを塗りつぶします
$tempnum = $EndDegrees - $startDegrees;
$MidPoint =round( ($tempnum/2) $startDegrees);
list ($ArcX, $ArcY) = Circle_point($MidPoint, $ChartDiameter/2);
imagefilltoborder($image,floor($ChartCenterX $ArcX),floor ($ChartCenterY $ArcY),
$CurrentColor,$ CurrentColor);
}
$red = imagecolorallocate($image,255,0,0);//赤を割り当てる
$white = imagecolorallocate ($image,255,255,255);//白を割り当てます
imagefilledellipse($image,81,98,120,120,$red);
$font = 'simhei.ttf';
imagettftext($image, 20,0 , 63, 108, $white, $font,$msg) ;
//画像が生成され、ブラウザに送信されます。重要なことは、ヘッダーをブラウザに認識させることです。 GIF ファイルです。
header("Content-type: image/png");
imagegif($image);
imagedestroy($image);
?>
-----解決策のアイデア----------------------
simhei .ttf を追加しますダウンロードする必要があるフォント ファイルです。私に問い合わせてください。
------解決策のアイデア----------------------
あなたが言及したこの写真もあります、描画の半径を制御し、各セクターの開始点を制御するには、アルゴリズムを考える必要があります。