円グラフ
ずっと何かを出版したいと思っていました。最近、php4 の php_gd.dll を完成させたばかりなので、グラフィック プログラムを作成して遊ぶのが待ちきれません。 PHPで円グラフを作成する例をたくさん見ましたが、それらはすべて2次元だったので、3次元のものを作りたいと思いました。苦労の末、pie3d が完成し、出来上がったものはみんなで共有します。ただし、私は PHP を初めて使用するため、コードが十分に洗練されていない可能性があります。皆さんにアドバイスをいただき、このプログラムを改善するために協力していただければ幸いです。忘れずに (estorm@yeah.net) に通知してください
+------------------------+
| 公開関数| + ------------------------+
define("ANGLE_STEP",5);//楕円弧を描く際の角度ステップを定義する
関数chx_getdarkcolor ($img,$clr){//$clr に対応する暗い色を見つけます
$rgb=imagecolorsforindex($img,$clr);
return array($rgb["red"]/2,$rgb[" green"] /2,$rgb["blue"]/2);
}
function chx_getexy($a,$b,$d){//角度 $d に対応する楕円上の点座標を見つけます
$ d=deg2rad( $d);
return array(round($a*Cos($d)),round($b*Sin($d))); $oy,$ a,$b,$sd,$ed,$clr){//楕円弧関数
$n=ceil(($ed-$sd)/ANGLE_STEP); ($x0, $y0)=chx_getexy($a,$b,$d);
for($i=0;$i$d=($d+ANGLE_STEP)> $ed?$ ed:($d+ANGLE_STEP);
list($x,$y)=chx_getexy($a,$b,$d);
imageline($img,$x0+$ox,$y0+$oy) ,$x+$ ox,$y+$oy,$clr);
$x0=$x
}
}
関数 chx_sector($img,$ox,$oy,$a,$ b,$sd ,$ed,$clr){// ファンを描画します
$n=ceil(($ed-$sd)/ANGLE_STEP)
list($x0,$y0); =chx_getexy($a,$b,$d);
イメージライン($img,$x0+$ox,$y0+$oy,$ox,$oy,$clr); $n;$i++ ){
$d=($d+ANGLE_STEP)>$ed?$ed:($d+ANGLE_STEP);
list($x,$y)=chx_getexy($a,$b, $d);
イメージライン($x0+$ox,$y0+$oy,$x+$ox,$y+$oy,$clr);
imageline($img,$x0+$ox,$y0+$oy,$ox,$oy,$clr);
list($x,$y)=chx_getexy($a/2,$b/2,($) d+$sd)/ 2);
imagefill($x+$ox,$y+$oy,$clr);
}
関数 chx_sector3d($img,$ox,$oy,$a,$b, $v,$sd ,$ed,$clr){//3D セクター
chx_sector($img,$ox,$oy,$a,$b,$sd,$ed,$clr); ;180){
list($R,$G,$B)=chx_getdarkcolor($img,$clr)
$clr=imagecolorallocate($img,$R,$G,$B); ;180) $ed =180;
リスト($sx,$sy)=chx_getexy($a,$b,$sd);
$sy+=$oy; $ey)=chx_getexy ($a,$b,$ed);
$ey+=$oy; $clr);
イメージライン($img,$ex,$ey,$ex,$ey+$v,$clr);
chx_arc($img,$ox,$oy+$v,$a,$b,$sd) ,$ed,$ clr);
list($sx,$sy)=chx_getexy($a,$b,($sd+$ed)/2); =$ox;
imagefill($img,$sx,$sy,$clr);
}
}
function chx_getindexcolor($img,$clr){//RBG をインデックスカラーにします
$R=($clr> >16) & 0xff;
$G=($clr>>8)& 0xff;
return imagecolorallocate($img,$R,$G,$B);
}
? >
+---------------+
| 3 次元の円グラフ ファイル|
+--------------+
require("pie3dfun.php");/ /楕円長半径
$b =50;//楕円セグメント長軸
$v=20;//丸いケーキの高さ
$font=5;//フォント
$ox=5+$a;
$oy=5+$b;
$fh=画像フォントの高さ($font); ,20);//データ
$labLst= array("a1","a2","a3","a4","a5","a6","a7","a8");//タグ
$clrLst=array(0x99ff00,0xff6666,0x0099ff, 0xff99ff,0xffff99,0x99ffff,0xff3333,0x009999);
$w=10+$a*2+$v+($fh) +2)*count($datLst);
$img=imagecreate($w,$h);
//RGB をインデックスカラーに変換
for($i=0;$i
$clrbk=imagecolorallocate($) img,0xff,0xff,0xff);
$ clrt=imagecolorallocate($img,0x00,0x00,0x00);
//背景色を塗りつぶします
imagefill($img,0,0,$clrbk);
$tot=0;
for($i =0;$i
$sd=0;
$ed=0;
$ly=10+$b*2+$v;
for($i=0; $i $sd=$ed;
$ed+ =$datLst[$i]/$tot*360;
//丸いケーキを描く
chx_sector3d($a,$b,$ v,$sd,$ed,$clrLst[$ i]);//$sd,$ed,$clrLst[$i]);
//ラベルを描画します
imagefilledrectangle($img,5,$ly,5+) $fw,$ly+$fh,$clrLst[$ i]);
imagerectangle($img,5,$ly,5+$fw,$ly+$fh,$clrt); 5+2*$fw,$ly,
$ labLst[$i].":".$datLst[$i]."(".(round(10000*($datLst[$i]/$tot)) /100)."%)",
$clrt );
$ly+=$fh+2
//出力グラフィックス
header("Content-type:image/gif"); ;
?>

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 中国語版
中国語版、とても使いやすい

Dreamweaver Mac版
ビジュアル Web 開発ツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター
