• ベストアンサー

PHPでグラフを書く

独学で、仕事の合間にWEBプログラミングを勉強しているものです。 普段はIBM、AS400でRPGを書いています。 ようやく、WEBで、PHP、MySQL,HTMLを使った売上を照会するような画面を作ることまでできました。 現状では、得意先コードを入力すると、年間の売上が月別の数字で照会されます。 ただ、WEBの特性を活かすという部の方針で、グラフ化ができてほしい ということで、今その方法を模索しています。 あちこちのサイトなどをみて、PHPにGDモジュールというものがあること、また、JpGraphというものをインストールする方法?などがあることまで 辿り着きましたが、その二つの違いというか、どんなものかということが いまいちわかりません。 目標としては円グラフや棒グラフで、売上の数字を出せればと思います。 部の人がHTMLで、グラフを作っていましたが、上記のものを使って 作れればと思い質問させていただきました。 また、インストールや設定の方法について詳しいサイト・わかりやすいサイトや本などがありましたらぜひ教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • awazak
  • ベストアンサー率36% (61/165)
回答No.3

phpのみで円グラフできますよ! 質素ですがこんな感じです。 読み込むファイル---------- <HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY> <IMG src="graph.php" width="200" height="200"> </BODY> </HTML> ------------------------- → graph.php------------------ <?php header("Content-Type: image/png"); ?> <?php // 画像のサイズ $im = imagecreate(200,200); // キャンパスの大きさ $ix = 100; // 中心のx座標 $iy = 100; // 中心のy座標 $iw = 200; // 画像の横幅 $ih = 200; // 画像の縦幅 $rs = 270; // 開始角度(上:270) // データ $data[0] = 80; $data[1] = 50; $data[2] = 30; $data[3] = 20; $data[4] = 10; // 色の定義(データの数だけ必要) $white = imagecolorallocate($im,255,255,255); $red = imagecolorallocate($im,255,0,0); $yellow = imagecolorallocate($im,255,255,0); $lime = imagecolorallocate($im,0,255,0); $cyan = imagecolorallocate($im,0,255,255); $blue = imagecolorallocate($im,0,0,255); $cd = array($red,$yellow,$lime,$cyan,$blue); // 合計値の計算 $length = count($data); $m=0; for($i=0; $i<=$length; $i++) { $m += $data[$i]; } // 画像の描画 for($i=0; $i<$length; $i++) { $st = $rs; $rs += $data[$i] / $m * 360; if($rs >= 360) $rs -= 360; imagefilledarc($im,$ix,$iy,$iw,$ih,$st,$rs,$cd[$i],4); } imagepng($im); ?> ----------------

mimi0115
質問者

お礼

ありがとうございました。 結構、綺麗に円グラフができるんですね。 とてもわかりやすいソースなので、 大変参考になりました。

その他の回答 (2)

  • awazak
  • ベストアンサー率36% (61/165)
回答No.2

棒グラフなら簡単にできますよ! まず、縦横1ピクセルの棒グラフの棒になるような画像を作成します。これを「ber.gif」とします。 グラフに表したい値を{$state}としたら、 <img scr='ber.gif' width='{$state}' height='5'>の様にwidthかheightに指定すればOKです。 あとはこれをループです。 ↓こんな感じで <? for($i=0;$result[$i]!="";$i++){ $state=$result[$i][state]; echo "<img scr='ber.gif' width='{$state}' height='5'><br />"; unset($state); } ?>

mimi0115
質問者

お礼

ありがとうございます。HTMLとPHPだけでも、棒グラフが作れるんですね。まずはそこからかなぁとおもいます。 ただ、円グラフなども会社的には要望があるみたいなので、 それにも対応できないとなと思っています。

  • pica_zip
  • ベストアンサー率67% (19/28)
回答No.1

GDは、線を引いたり円を描いたりといった、比較的単純な画像の生成を行なうグラフィックライブラリです。 また GD そのものは PHP 以外の言語からも使用可能な物です。(PHPの場合はバンドルされてますが) JpGraph はGDのコマンドを利用して複雑なグラフ(円グラフ、チャート図etc..)を PHP から作成・利用可能にしたPHP ベースのクラスライブラリです。 (商用で使う場合、有償ライセンスが必要みたいですね) 日本の代理店? http://www.asial.co.jp/products/jpgraph/professional.php 本家 http://www.aditus.nu/jpgraph/

mimi0115
質問者

お礼

なるほど、じゃあどちらにしろGDを使えるようには設定を変えていないといけないということですか。 ちょっと自分のPCの設定を見ましたが、GDは使えない状態なので、 まずiniファイルの修正ですかね。 そのあと、どうやら会社はゆくゆくはJpGraphも使う意向なので、 一足先に予習と思ったんですが、 GDにしろ、JpGraphにしろ、具体的なサイトというのが、いまいち見つからないので、どのように設定するのかすら、悩む感じです。 なにかいい本や参考書があればいいのですが、、、、。

関連するQ&A