-PR-
解決済み

PHPでグラフを書く

  • すぐに回答を!
  • 質問No.1492787
  • 閲覧数259
  • ありがとう数5
  • 気になる数1
  • 回答数3
  • コメント数0

お礼率 40% (32/79)

独学で、仕事の合間にWEBプログラミングを勉強しているものです。
普段はIBM、AS400でRPGを書いています。

ようやく、WEBで、PHP、MySQL,HTMLを使った売上を照会するような画面を作ることまでできました。
現状では、得意先コードを入力すると、年間の売上が月別の数字で照会されます。

ただ、WEBの特性を活かすという部の方針で、グラフ化ができてほしい
ということで、今その方法を模索しています。

あちこちのサイトなどをみて、PHPにGDモジュールというものがあること、また、JpGraphというものをインストールする方法?などがあることまで
辿り着きましたが、その二つの違いというか、どんなものかということが
いまいちわかりません。
目標としては円グラフや棒グラフで、売上の数字を出せればと思います。
部の人がHTMLで、グラフを作っていましたが、上記のものを使って
作れればと思い質問させていただきました。

また、インストールや設定の方法について詳しいサイト・わかりやすいサイトや本などがありましたらぜひ教えてください。
通報する
  • 回答数3
  • 気になる1
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル10

ベストアンサー率 36% (61/165)

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

お礼率 40% (32/79)

ありがとうございました。
結構、綺麗に円グラフができるんですね。
とてもわかりやすいソースなので、
大変参考になりました。
投稿日時 - 2005-07-08 10:19:48

その他の回答 (全2件)

  • 回答No.2
レベル10

ベストアンサー率 36% (61/165)

棒グラフなら簡単にできますよ!

まず、縦横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

お礼率 40% (32/79)

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


  • 回答No.1
レベル8

ベストアンサー率 67% (19/28)

GDは、線を引いたり円を描いたりといった、比較的単純な画像の生成を行なうグラフィックライブラリです。
また GD そのものは PHP 以外の言語からも使用可能な物です。(PHPの場合はバンドルされてますが)

JpGraph はGDのコマンドを利用して複雑なグラフ(円グラフ、チャート図etc..)を PHP から作成・利用可能にしたPHP ベースのクラスライブラリです。
(商用で使う場合、有償ライセンスが必要みたいですね)

日本の代理店?
http://www.asial.co.jp/products/jpgraph/professional.php
本家
http://www.aditus.nu/jpgraph/
お礼コメント
mimi0115

お礼率 40% (32/79)

なるほど、じゃあどちらにしろGDを使えるようには設定を変えていないといけないということですか。
ちょっと自分のPCの設定を見ましたが、GDは使えない状態なので、
まずiniファイルの修正ですかね。
そのあと、どうやら会社はゆくゆくはJpGraphも使う意向なので、
一足先に予習と思ったんですが、
GDにしろ、JpGraphにしろ、具体的なサイトというのが、いまいち見つからないので、どのように設定するのかすら、悩む感じです。
なにかいい本や参考書があればいいのですが、、、、。
投稿日時 - 2005-07-06 15:39:33
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-

特集


抽選で合計100名様にプレゼント!

ピックアップ

ページ先頭へ