• ベストアンサー

PHPでグラフを書く

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

  • PHP
  • 回答数3
  • ありがとう数5

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

  • ベストアンサー
  • 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

  • PHPで簡単なグラフを出したい

    GDモジュールのインストールしていないと思われる専用サーバでPHP4のグラフを使ったプログラミングをしたいのですが、どのような方法がありますか?

    • ベストアンサー
    • PHP
  • 折れ線グラフの描画について

    GDを使って折れ線グラフを描画しようと考えております。 JpGraphなどを使うケースが多いようですが、GDのみで作成をしなければ いけないのですが、良いサンプルなどはありますでしょうか。 環境は以下です。 PHP4.2.2 GD1.6.2

    • ベストアンサー
    • PHP
  • PHPグラフ作成について

    今PHPでGDを使い円グラフを作成しようとしていますが うまくいきません. 環境はwindowsで,PHPversion 5.2.3です. GDを使うためには, PHP.iniの extension=php_gd2.dllの行からコメントをはずして Apacheを再起動すると本に書いてありましたので, PHP.iniの extension=php_gd2.dll extension=php_gettext.dll extension=php_gmp.dll extension=php_ifx.dll extension=php_imap.dll extension=php_interbase.dll extension=php_ldap.dll extension=php_mbstring.dll extension_dir=C:\program Files\PHP\ext extension=php_mcrypt.dll extension=php_mhash.dll extension=php_mime_magic.dll extension=php_ming.dll extension=php_msql.dll extension=php_mssql.dll extension=php_mysql.dll extension=php_mysqli.dll extension=php_oci8.dll extension=php_openssl.dll extension=php_pdo_firebird.dll extension=php_pdo_mssql.dll extension=php_pdo_mysql.dll extension=php_pdo_oci.dll extension=php_pdo_oci8.dll extension=php_pdo_odbc.dll extension=php_pdo_pgsql.dll extension=php_pgsql.dll extension=php_pspell.dll extension=php_shmop.dll extension=php_snmp.dll extension=php_soap.dll extension=php_sockets.dll extension=php_pdo.dll extension=php_pdo_sqlite.dll extension=php_sqlite.dll extension=php_sybase_ct.dll extension=php_tidy.dll extension=php_xmlrpc.dll extension=php_xsl.dll extension=php_zip.dll のコメントをはずし, Apacheをrestartしました. しかし,グラフをつくるプログラムを書いて実行すると, Warning: require_once(jpgraph/jpgraph.php) [function.require-once]: failed to open stream: No such file or directory in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\prog\traning\piegraph.php on line 11 Fatal error: require_once() [function.require]: Failed opening required 'jpgraph/jpgraph.php' (include_path='.;C:\Program Files\PHP\pear') in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\prog\traning\piegraph.php on line 11 のようなエラーが出てしまいます. これはGDがきちんとインストールされていないから, このようなエラーがでるのでしょうか? もしそうであればGDをインストールする方法をご存知の方や 解決方法をご存知の方いらっしゃいましたら いらっしゃいましたら教えていただけないでしょうか? お願いします.

    • 締切済み
    • PHP
  • jpgraphで円グラフの絶対値を表示する方法

    PHP+gd+jpgraphで円グラフの作成を試みています。描画そのものはできたのですが、初期値で%表示になっているラベルを絶対値(値そのもの)の表示に変更できず困っています。 jpgraphのマニュアルによると、 $p1->SetLabelType("PIE_VALUE_ABS"); にするとよいと書かれている(と思う)のですが、%表示しかしません。 jpgraph_pie.phpの初期値も DEFINE("PIE_VALUE_ABS",1); DEFINE("PIE_VALUE_PER",0); から DEFINE("PIE_VALUE_ABS",0); DEFINE("PIE_VALUE_PER",1); に変更してみましたが、まったく変わりません。 どうすれば値を表示できるでしょうか?

    • ベストアンサー
    • PHP
  • jpgraphについて

    PHPでYahooファイナンスの様な折れ線グレフ画像を生成しようと思い、ネットを色々と検索しております。 当初はGDを使うつもりだったのですが、jpgraph(http://www.aditus.nu/jpgraph/)というライブラリがある事を知りました。 とりあえずは、使ってみようと思っているのですが、レンタルサーバで利用する方法がいまいちわかりません。 jpgraphは、サーバ管理者にインストールしてもらわなければ使用できないのでしょうか? それとも、ダウンロードしてきた物を、自分のWEB領域に置けば使えるものなのでしょうか? レンタルサーバを使用されている方で、jpgraphについてご存知の方がおられました、ご教授お願い致します。

    • ベストアンサー
    • PHP
  • JpGraphのグラフをうまくサイトにはめ込みたいが・・

    JpGraphを使用してデータベースから抽出したデータをサイトに 表示したいと思っています。 メインのサイトから、 名前、パスワード、期間等を入力ポストして、 次画面にてグラフ表示したいと思っています。 グラフ表示するだけなら、メインサイトで <form method="post" action="graph.php"> <input type="text" name="name"> : </form> で graph.php内でデータ抽出・グラフ出力でOKだと思うのですが、 次画面ではグラフだけでなく<html>に埋め込んだ形でいろいろと 他の情報も表示したいと思っています。 <html> <body> 検索結果・・・ <img src="graph.php"> : graph.phpには名前やパスワード等の情報も送らなければいけないので どのような方法で行なわなければいけないのか、よくわかりません。 お知恵お貸しください。

    • ベストアンサー
    • PHP
  • JpGraphを使ってみたいのですが…

    こんにちは。 いつもお世話になっております。 JpGraphというものがあるのを知って、 使ってみたいと思ってさっそくインストール したのです。 php.iniを書き換えて、JpGrapgの インストールまで終了しました。 phpinfo()でGDが有効になっているのも 確認しました。 簡単なサンプルを実行してみたのですが エラーが出てきます。 どなたかご指導していただけないでしょうか・・ PHPの中身 <?php include("ijpgraph/jpgraph.php"); include("jpgraph/jpgraph_pie.php"); //グラフの作成 $graph=new Graph(300,200,"auto"); //線1のプロット $data=array(75,56,24,12,5); $plot->new PiePlot($data); $graph->Add($plot); $graph->Stroke(); ?> エラー内容 Parse error: syntax error, unexpected T_STRING in C:\Apache\Apache2\htdocs\graph\test.php on line 10 どうかよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPグラフ作成について

    文字エンコードをシフトJISにして PHPを使い日本語が入ったグラフを作ろうと考えております. 文字エンコードがUTF-8の場合では日本語の入ったグラフを Google Chart APIを使い作成できるのですが, どうしても文字エンコードを シフトJISにしてグラフを作ることができません. PHPで日本語が入ったグラフを文字エンコードをシフトJISにして 作る方法をご存知のかたいらっしゃいましたら, 教えてください. お願いします. またPHP経験が浅いためグラフ作成が簡単にわかるような 初心者向けのサイトがあれば教えていただければ幸いです.

    • ベストアンサー
    • PHP
  • 円グラフ描画について

    PHPでの円グラフ描画について質問です。 PHPのバージョンは4.2.2で、GDのバージョンは1.6.2です。 円を描画するimagefilledarc関数はGDのバージョンが2.0.1以上でないと 使えないようで、行き詰っています。。 円を描画するよい方法はあるでしょうか?

    • ベストアンサー
    • PHP
  • jpgraphのインストール

    ApacheとPHP5のインストールが無事終わり、次にjpgraph-2.2をインストールしたのですが、うまくできません。 C:/php/includes/jpgraph において php.iniの;extension=php_gd2.dllの;をとってGDを有効に ; Windows: "\path1;\path2" include_path = ".;c:\php\includes;c:\php\includes\jpgraph"として Apacheの再起動をしましたが、これだけではダメなのでしょうか? またサンプルのipgraphソース、a.phpを・・・apache/htdocsにおいて表示させても、うまく表示できません。以下エラーです。 Warning: main(JpGraph/jpgraph.php) [function.main]: failed to open stream: No such file or directory in C:\Program Files\Apache Group\Apache2\htdocs\a.php on line 3 Fatal error: main() [function.require]: Failed opening required 'JpGraph/jpgraph.php' (include_path='.;C:\php\includes;C:\php\includes\jpgraph') in C:\Program Files\Apache Group\Apache2\htdocs\a.php on line 3 初心者で恐縮ですが、教えて下さい。 よろしくお願いします。

    • 締切済み
    • PHP

専門家に質問してみよう