phpでグラフを書く「Image_Graph」

インストール

pear環境がないのでサイトからダウンロードして使うことにした。

以下の3つをDL
http://download.pear.php.net/package/Image_Graph-0.7.2.tgz
http://download.pear.php.net/package/Image_Canvas-0.3.0.tgz
http://download.pear.php.net/package/Image_Color-1.0.2.tgz

phpのpathの通った場所にImageディレクトリを作成する。
上記3つを解凍し中の

Image_Graph-0.7.2/Graph.php
Image_Graph-0.7.2/Graph/*
Image_Canvas-0.3.0/Canvas.php
Image_Canvas-0.3.0/Canvas/*
Image_Color-1.0.2/Color.php

を今作ったImageディレクトリに入れればOK.
あとはソース中で

<?php
require_once('Image/Graph.php');
?>

とすれば、使えるようになります。


pearによるインストールの仕方はここを参照してください。

Side-B » Blog Archive » PHPPEARのImage_Graphライブラリをインストールしたときのメモ

http://side-b.sto.co.jp/weblog/archives/112


フォントの設定はここらへんを参照

HPのテクメモ | Image_Graphを使ってみる

http://php.atseason.com/?eid=523760


日本語はここらへんを参照

Side-B » Blog Archive » PHPPEARのImage_Graphライブラリをインストールしたときのメモ:

http://side-b.sto.co.jp/weblog/archives/category/php/pear/image_graph/


fileencodingがutf-8なら、日本語フォントを指定してあげれば、graphの出力をutf-8とかしなくて大丈夫っぽいみたいですが。

使う

こことか

PHPBuilder.com, the best resource for PHP tutorials, templates, PHP manuals, content management systems, scripts, classes and more.

http://www.phpbuilder.com/columns/ian_gilfillan20060613.php3


こことか

pear.veggerby.dk - Image_Graph Samples

http://pear.veggerby.dk/samples/


のソースをコピペしたり、値いじったりして触って行けば、大体理解できます。
あとは、自分がやりたいことの機能があるかソースを調べるとか。

流れ

大体の流れ

  1. Graphクラスのインスタンス(以下graph)を作成
    1. graphからfont(フォント)を作成
      1. fontをカスタマイズ(色、大きさ、フォントタイプ)
      2. graphにfontを登録
    2. graphにplotarea(描画領域)を登録(add)
      1. protareaからdataset(データ)を作成
        1. datasetに座標や数値を登録
        2. datasetをprotareaに登録
      2. marker作って登録等オプションの設定
      3. protoareaをカスタマイズ(色をつけたり)
      4. protoareaからaxis(軸)を取り出してカスタマイズ
  2. 描画
線グラフ作ってく中でメモ
  • add
    • 描画領域の追加
  • add***
    • オブジェクトの追加
  • 色関係
    • Color.phpに使用可能な色が書いてあるので参照
    • orange@0.1のように@のあとに数値を書くと透明度を指定できる
    • setFillColor
      • 背景色
    • setBorderColor
      • 枠色
    • setFontColor
      • 文字色
  • 軸関係(axis)
    • showArrow/hideArrow
      • 軸の矢印の表示/非表示
    • forceMinimum/forceMaximum
      • 軸の最小値/最大値を強制的に指定
    • setLabelInterval
      • 軸の表示ラベルの間隔指定
    • setInverted
      • 上下反転
悩む
 1┼
  │
 5┼
  │
10└┼-┼-┼-┼-┼
     1  2  3  4  5

こんなかんじでy軸に対して小さい数字が上に来るようなグラフを作りたいのですが、うまくいかない・・・。

<?php
$AxisY =& $Plotarea->getAxis('y');
$AxisY->setInverted(true);
?>

でy軸に対して小さい数字が上に来るようには出来るのですが、x軸が勝手に上に表示されるようになってしまうため、思い通りのグラフが作れません!
サンプルにもこの形式のグラフが載っていないので、デフォルトでは作れないようになっているのかなーと感じながらも、ソースを見たりしてうんうん頭を悩ませているところです。


回答を知っている方がいたら教えてください><