本ドキュメントはPHPlot 5.0rc1についてのドキュメントです。
当方がそれほど使いこなしていないのでドキュメントの質に疑問がありますが(^^;、
我慢できる方のみご利用ください。
本ドキュメントの中に「違うぢゃない!」という箇所がありましてもサポートしかねますので、
その点をご考慮してお読みください。
このドキュメントはリンクフリーです。加工でも何でも使えるなら好きに使ってください。
PHPlot(http://www.phplot.com/)はPHPでグラフを描画するためのクラスライブラリです。
グラフ作成の際に画像(GIF/JPEG/PNG)を作成するのでGDに対応させたPHPが必要になります。
JpGraph*1(http://www.aditus.nu/jpgraph/)に比べると機能的に劣りますが、
フリー版のJpGraphが商用利用禁止なのに対し、PHPlotはGPL及びPHPライセンスの為、
ソース再配布の原則を侵さない限り商用での利用が可能です。
*1.日本語版はアシアル株式会社(http://www.asial.co.jp/jpgraph)が販売しています。
PHPlotでは以下のグラフが作成できます。
・折れ線グラフ
・棒グラフ
・円グラフ
・エリアグラフ
イメージはグラフの種類指定を参照ください。
PHPlotのセットアップはアーカイブをサイトからダウンロードし、PHPスクリプトの実行可能な
ディレクトリに配置するだけでOKです。
他のPHPプログラムからは
// グラフオブジェクトの生成
require_once("phplot/phplot.php");
$graph = new PHPlot(250,150,$img_file);
$graph->SetIsInline(TRUE);
$graph->SetDataType("text-data");
$graph->SetDataValues($data);
...
のように require_once してPHPlotをロードして利用します。
PHPlotを使う場合にはPHPのGDサポートを有効にしておく必要があります。
テストはWindows用のPHPバイナリを用いたのですが、これだと特に設定せずとも*2動作します。
*2.多分ね...。ってかphp.iniをいじったか覚えてない。
<html>
<head><title>グラフのテスト</title></head>
<body>
グラフのテスト<br>
<? php
$data[0] = array('', 1); // データを適当にセット
$data[1] = array('', 2);
$data[2] = array('', 3);
$data[3] = array('', 4);
$img_file = "hoge.png"; // 画像ファイル名
require_once("phplot/phplot.php"); // PHPlotのロード
$graph = new PHPlot(250,150,$img_file); // PHPlotオブジェクト生成(250x150pixel)
$graph->SetIsInline(TRUE); // 画像のインライン化を有効に(画像をファイル出力化)
$graph->SetDataType("text-data"); // データ型の指定
$graph->SetDataValues($data); // データのセット
$graph->SetYTitle('test');
$graph->SetYTickIncrement(10);
$graph->SetPlotType('linepoints');
$graph->SetLegend('test');
$y_min = 0;
$y_max = 20;
$rows = sizeof($data);
$graph->SetPlotAreaWorld(0,$y_min,$rows,$y_max); // グラフの表示域を設定
$graph->DrawGraph(); // グラフを描画
$std = 3; // 基準線を描画
$color_blue = $graph->SetIndexColor("blue");
// 基準値
$graph->DrawDashedLine($graph->plot_area[0],$graph->ytr($std),
$graph->plot_area[2],$graph->ytr($std),
2,0,$color_blue);
$graph->PrintImage(); // グラフをファイルに出力
?>
<img src="hoge.png">
</body>
</html>
PHP部分で画像ファイルを作成し、HTMLのイメージタグで作成した画像ファイルを参照します。
この仕組みではページ表示時に動的に画像ファイルが生成されますが、ファイル名が固定の為、
複数サイトからの同時アクセスの際にタイミングによっては意図しない画像が表示されるかも知れません。
運用で逃げるようにしてください。;-p
ちなみに実行結果はこんな感じ

任意の線を引く為のドキュメントが皆無だったので、敢えて加えてみました。
青線の部分がDrawDashedLineで線引きした部分です。
グラフの種類はSetPlotTypeメソッドで行います。
PHPlotではDrawGraphメソッドがグラフの描画を一手に行ってくれますので、
一度作成したソースにほとんど手を加えることなくグラフを折れ線→棒に変更できます。
種類指定は以下のように行います。
$graph->SetPlotType('linepoints');
引数に以下のグラフタイプを指定します。指定できる引数は以下の通り。
・thinbarline … 棒グラフの棒を線状にして描画します

・area … エリアグラフを描画します

・squared … 折れ線グラフで0→1などのグラフを方形に描画します

・lines … 折れ線グラフを描画します

・linepoints …折れ線グラフにデータの点をプロットしながら描画します

・points … データの点のみをプロットして描画します

・stackedbars … 各要素を積み重ねた棒グラフを描画します

・bars … 棒グラフを描画します

未指定の場合にはbarsがセットされます。
| コンストラクタ | 引数 | 処理 |
|---|---|---|
| PHPlot($width, $height, $output_file, $input_file); |
$width … グラフの幅(pixel) $height … グラフの高さ(pixel) $output_file … インライン指定時に作成する画像ファイル名 (省略可) $input_file … 背景画像を取込む際の画像ファイル名 (省略可) |
PHPlotのグラフオブジェクトのコンストラクタ |
以降は
$graph = new PHPlot($width, $height);
した後のgraphオブジェクトを使って説明します。
個人的に重要と思われるメソッドは太字にしてあります。
PHPlotはPHPlotオブジェクトをnewした後はメンバ変数(オブジェクトのプロパティって言うのか?)を直接変更するのではなく
Set*********
のデータセット系のメソッドを使って値をセットします。値のセットが完了したら
DrawGraph()
PrintImage()
などの描画系メソッドをコールして描画させます。
という訳でセット系があるためにメソッドの数が膨大になっていますが、
ほとんどがパラメータセット用ですので気にしないでください。
※おまけに内部メソッド*3も山のようにあるし...orz。
*3.PHPlotの内部処理用なので通常は使う必要はありません ;-p
| メソッド名 | 引数 | 処理 |
|---|---|---|
| 色指定系のメソッド | ||
| $graph->SetBackgroundColor($color); |
$color … 色名*4 *4.rgb_inc.phpで定義された色名を指定 |
グラフ背景色を設定するメソッド |
| $graph->SetTitleColor($color); |
$color … 色名 |
タイトル文字の色を指定するメソッド |
| $graph->SetTextColor($color); |
$color … 色名 |
目盛りの文字の色を指定するメソッド |
| $graph->SetLightGridColor($color); |
$color … 色名 |
目盛り補助線の色を指定するメソッド(軸線色はSetGridColorメソッド) |
| $graph->SetGridColor($color); |
$color … 色名 |
軸線の色を指定するメソッド |
| $graph->SetIndexColor($color); |
$color … 色名 |
PHPlotで使用する色定義オブジェクトを生成するメソッド |
| $graph->SetIndexDarkColor($color); |
$color … 色名 |
SetIndexColorメソッドより0x30分だけ暗い色を返すメソッド 棒グラフの影の部分等で使われていると思われ。 |
| $graph->SetDefaultStyles(); |
なし |
内部メソッド コンストラクタの内部でコールされる |
| $graph->SetPlotBgColor($color); |
$color … 色名 |
プロットする領域の背景色を設定するメソッド SetDrawPlotAreaBackgroundメソッドでTRUEにした時に有効 |
| $graph->SetTickColor($color); |
$color … 色名 |
軸上の目盛り線の色を指定するメソッド |
| $graph->SetLabelColor($color); |
$color … 色名 |
ラベル文字の色を指定するメソッド SetTitleColorメソッドと全く同じ |
| $graph->SetImageBorderColor($color); |
$color … 色名 |
画像の枠色を指定するメソッド 枠の有無はSetImageBorderStyleメソッドで指定(デフォルト無効) |
| $graph->SetTransparentColor($color); |
$color … 色名 |
透過色を指定するメソッド |
| $graph->SetRGBArray($color_array); |
$color_array … 変換方法 small … メソッド内の色変換テーブルで変換 large … rgb.inc.phpを利用 |
内部メソッド 色変換テーブルをセットするメソッド |
| $graph->SetRGBColor($color); |
$color … 色 RGBを10進配列(255,255,255)で渡す RGBを16進数(#FFFFFF)で渡す |
指定した色を作成するメソッド |
| $graph->SetDataColors($data,border); |
$data … データの色(配列) $border … 棒の枠色(配列) |
グラフの要素の色を指定するメソッド borderは棒グラフでshading無しの場合に有効 |
|
$br … 棒の枠色(配列) |
内部メソッド SetDataColorsメソッドから呼び出し 過去の互換性維持の為に存在(使わない方が良い) |
|
| $graph->SetErrorBarColors($err); |
$err … 閾値表示線(レーダーチャートっぽいやつ)の色 |
閾値表示線(レーダーチャートっぽいやつ)の色を指定するメソッド |
| $graph->SetDefaultDashedStyle($style); |
$style … 破線の表示形式 4-3 … 4pixelが色付きで3pixelが透過 2-3-1-2 … 2pixelが色付きで3pixelが透過で1pixelが色付きで2pixelが透過 numcol-numtrans-numcol-numtrans...の形で指定 |
破線の表示形式のデフォルト値を指定するメソッド |
| $graph->SetDashedStyle($ndxcol); |
$ndxcol … 破線の色 |
内部メソッド 破線の色を指定するメソッド |
| $graph->SetLineWidths($lw); |
$lw … 線の太さ |
内部メソッド 線の太さを指定するメソッド |
| $graph->SetLineStyle($ls); |
$ls … 線の形式 solid … 単線 dashed … 破線 |
内部メソッド 線の形式を指定するメソッド |
| フォント指定系のメソッド | ||
| $graph->SetLineSpacing($spc); |
$spc … 行間 |
行間の高さを指定するメソッド |
| $graph->SetUseTTF($ttf); |
$ttf … 使用するフォント |
使用するフォントを指定するメソッド 未コール時にはTrueTypeフォントを使わない |
| $graph->SetTTFPath($path); |
$path … 使用するフォントファイルへのパス |
使用するフォントファイルへのパスを指定するメソッド |
| $graph->SetDefaultTTFont($font); |
$font … 設定するフォント |
デフォルトのTrueTypeフォントを指定するメソッド SetUseTTFメソッドと合わせて使用 |
| $graph->SetDefaultTTFont($font); |
$font … 設定するフォント |
デフォルトフォントを指定するメソッド |
| $graph->SetDefaultFonts(); |
なし |
内部メソッド デフォルトフォントを設定するメソッド |
| $graph->SetFont($elem, $font, $size); |
$elem … 表示する場所 generic … 下のもの以外 title … タイトル legend … 要素名表示Box x_label … X軸ラベル y_label … Y軸ラベル x_title … X軸タイトル y_title … Y軸タイトル $font … フォント $size … フォントサイズ |
内部メソッド デフォルトフォントを設定するメソッド |
| $graph->TTFBoxSize($size, $angle, $font, $string); |
$size … フォントサイズ $angle … 回転角度 $font … フォント $string … 表示文字 |
内部メソッド TrueTypeフォントの表示領域を設定するメソッド 回転させる時などに必要 |
| $graph->DrawText($font, $angle, $x_pos, $y_pos, $color, $text, $halign, $valign); |
$font … フォント $angle … 回転角度 $x_pos … X軸位置 $y_pos … X軸位置 $color … 色 $text … 表示文字 $halign … 水平位置 left … 左寄せ right … 右寄せ center … 中心 $valign … 垂直位置 bottom … 下揃え center … 中心 |
テキストを表示するメソッド |
| ファイル入出力系のメソッド | ||
| $graph->PrintImage(); |
なし |
DrawGraphメソッドで作成したグラフ画像を出力するメソッド |
| $graph->SetIsInline($ii); |
$ii … TRUE / FALSE |
画像ファイルをインライン出力するか指定するメソッド デフォルトはFALSE(出力しない) SetOutputFileメソッドのファイルに出力するにはTRUEを指定 |
| $graph->SetFileFormat($format); |
$format … 出力する画像形式 jpg … JPEG png … PNG gif … GIF wbmp … Windows Bitmap |
出力するグラフの画像形式を指定するメソッド |
| $graph->SetOutputFile($output_file); |
$output_file … 出力画像ファイル名 |
画像ファイルの出力先を指定するメソッド SetIsInlineメソッドと合せて使用 ※コンストラクタの際に指定していれば再指定不要 |
| $graph->SetBgImage($input_file, $mode); |
$input_file … 画像ファイル名 $mode … 配置方法 centeredtile … 中心に配置 tile … タイル状(繰り返し配置) scale … 領域全体にあわせる |
背景画像ファイルを指定するメソッド 描画はDrawBackgroundメソッド |
| $graph->SetPlotAreaBgImage($input_file, $mode); |
$input_file … 画像ファイル名 $mode … 配置方法 centeredtile … 中心に配置 tile … タイル状(繰り返し配置) scale … 領域全体にあわせる |
プロットエリアの背景画像ファイルを指定するメソッド 描画はDrawPlotAreaBackgroundメソッド |
| $graph->PrintError($error_message); |
$error_message … エラー文字列 |
内部メソッド エラー文字列をecho出力するメソッド |
| $graph->DrawError($error_message, $x, $y); |
$error_message … エラー文字列 $x … 表示X軸位置 $y … 表示Y軸位置 |
内部メソッド エラー文字列を画像内に表示するメソッド |
| ラベル指定系のメソッド | ||
| $graph->SetXDataLabelPos($xdlp); |
$xdlp … X軸表示位置 plotdown : グラフ上部 plotup : グラフ下部 both : plotdown/plotupの両方 xaxis : X軸(X=0)上 all : plotdown/plotup/xaxisの全部 none : 表示しない |
X軸ラベルの表示位置を指定するメソッド |
| $graph->SetYDataLabelPos($ydlp); |
$ydlp … Y軸表示位置 plotleft : グラフ左部 plotright : グラフ右部 both : plotleft/plotrightの両方 yaxis : Y軸(Y=0)上 all : plotleft/plotright/yaxisの全部 none : 表示しない |
Y軸ラベルの表示位置を指定するメソッド |
| $graph->SetXTickLabelPos($xtlp); |
$xtlp … X軸上表示位置 plotdown : グラフ上部 plotup : グラフ下部 both : plotdown/plotupの両方 xaxis : X軸(X=0)上 all : plotdown/plotup/xaxisの全部 none : 表示しない |
X軸上目盛りの表示位置を指定するメソッド |
| $graph->SetYTickLabelPos($ytlp); |
$ytlp … Y軸上表示位置 plotleft : グラフ左部 plotright : グラフ右部 both : plotleft/plotrightの両方 yaxis : Y軸(Y=0)上 all : plotleft/plotright/yaxisの全部 none : 表示しない |
Y軸上目盛りの表示位置を指定するメソッド |
| $graph->SetXLabelType($xlt); |
$xlt … 表示形式 data : 数値 time : 日時 title : 0,1,2,...で指定せず |
X軸ラベルの表示形式を指定するメソッド |
| $graph->SetYLabelType($ylt); |
$ylt … 表示形式 data : 数値 time : 日時 |
Y軸ラベルの表示形式を指定するメソッド |
| $graph->SetXTimeFormat($xtf); |
$xtf … 時間の表示形式 |
X軸の時間の表示形式を指定するメソッド SetXLabelType('time')の時に有効 デフォルトは'%H:%m:%s' |
| $graph->SetYTimeFormat($ytf); |
$ytf … 時間の表示形式 |
Y軸の時間の表示形式を指定するメソッド SetYLabelType('time')の時に有効 デフォルトは'%H:%m:%s' |
| $graph->SetXLabelAngle($xla); |
$xla … 角度 |
X軸のラベル文字の傾きを指定するメソッド Fixedフォントは90°のみ利用可能 |
| $graph->SetYLabelAngle($yla); |
$yla … 角度 |
Y軸のラベル文字の傾きを指定するメソッド Fixedフォントは90°のみ利用可能 |
| 一般のメソッド | ||
| $graph->SetPlotType($pt); |
$pt … グラフの種類*5 *5.前述のグラフの種類指定を参照 |
グラフの種類を指定するメソッド |
| $graph->SetDataType($dt); |
$dt … データ型を指定 |
データ型を指定するメソッド $text-data … ('label', y1, y2, y3, ...) $text-data-single … ('label', data) $data-data … ('label', x, y1, y2, y3, ...) $data-data-error … ('label', x, y1, e1+, e1-, y2, e2+, e2-, ...) デフォルトはtext-data |
| $graph->SetDataValues(&$dv); |
$dv … グラフにするデータ(へのポインタ) |
SetDataTypeメソッドで指定した型式の配列を渡します |
| $graph->SetPlotAreaWorld($xmin, $ymin, $xmax, $ymin); |
$xmin … X軸の最小値(データ値) $ymin … Y軸の最小値(データ値) $xmax … X軸の最大値(データ値) $ymax … Y軸の最大値(データ値) |
グラフの表示粋(Xのmin〜max,Yのmin〜max)を指定するメソッド 値はデータ値で指定 |
| $graph->SetTitle($title); |
$title … プロットエリア上部に表示したい文字 |
プロットエリアの上に文字(タイトル)を指定するメソッド |
| $graph->SetXTitle($title, $xpos); |
$title … X軸に表示したい文字 $xpos … 文字の位置 plotdown : グラフ上部 plotup : グラフ下部 both : plotdown/plotupの両方 none : 表示しない |
X軸のラベル文字(タイトル)を指定するメソッド $xpos省略時はplotdown |
| $graph->SetYTitle($title, $ypos); |
$title … Y軸に表示したい文字 $ypos … 文字の位置 plotleft : グラフ左部 plotright : グラフ右部 both : plotleft/plotrightの両方 none : 表示しない |
Y軸のラベル文字(タイトル)を指定するメソッド $ypos省略時はplotleft |
| $graph->SetLegend($leg); |
$leg … 要素名の配列 |
要素名表示Boxの内容を指定するメソッド |
| $graph->CheckOption($opt, $acc, $func); |
$opt … チェックする文字列 $acc … 指定可能な要素 $func … 呼ばれる関数名 |
内部メソッド チェックする文字列が指定可能な要素に含まれるかチェックし、 含まれるならfuncを呼ぶメソッド |
| $graph->SetBrowserCache($browser_cache); |
$browser_cache … TRUE / FALSE |
ブラウザにイメージヘッダを送信するか指定するメソッド デフォルトはFALSE(送信しない) 送信するとブラウザのキャッシュが有効になります |
| $graph->SetPrintImage($pi); |
$pi … TRUE / FALSE |
複数グラフイメージの生成を許可するメソッド? デフォルトはTRUE(許可する?) |
| $graph->SetLegendPixels($x, $y); |
$x … X軸の配置位置(pixel) $y … Y軸の配置位置(pixel) |
要素名表示Boxの位置(pixel)を指定するメソッド |
| $graph->SetLegendWorld($x, $y); |
$x … X軸の配置位置(データ値) $y … Y軸の配置位置(データ値) |
要素名表示Boxの位置(データ値)を指定するメソッド |
| $graph->SetPlotBorderType($pbt); |
$pbt … プロットエリアの枠表示形式 left : 左のみ sides : 両脇 none : なし full : 全部 |
プロットエリアの枠の表示形式を指定するメソッド デフォルトはsides |
| $graph->SetImageBorderType($sibt); |
$sibt … グラフ画像枠表示形式 raised : border-style:outsetな枠 plain : 単線の枠 none : 枠なし |
グラフ画像枠表示形式を指定するメソッド デフォルトはnone |
| $graph->SetDrawPlotAreaBackground($dpab); |
$dpab … TRUE / FALSE |
プロットする領域の背景色等を有効にするメソッド $dpabをTRUEにすると有効になる(デフォルト無効) |
| $graph->SetDrawYGrid($dyg); |
$dyg … TRUE / FALSE |
Y軸の原点線を有効にするメソッド $dygをFALSEにすると無効になる(デフォルト有効) |
| $graph->SetDrawXGrid($dxg); |
$dxg … TRUE / FALSE |
X軸の原点線を有効にするメソッド $dxgをTRUEにすると有効になる(デフォルト無効) |
| $graph->SetDrawDashedGrid($ddg); |
$ddg … TRUE / FALSE |
目盛り線の破線処理を設定するメソッド $ddgをFALSEにすると無効(普通の線)になる(デフォルト有効) |
| $graph->SetDrawXDataLines($dxdl); |
$dxdl … TRUE / FALSE |
プロットした点からX軸にガイド線を引くか設定するメソッド $dxdlをTRUEにすると有効になる(デフォルト無効) |
|
$dydl … TRUE / FALSE |
プロットした点からY軸にガイド線を引くか設定するメソッド $dydlをTRUEにすると有効にしたいらしいが未実装とのこと |
|
| $graph->SetShading($s); |
$s … 影の大きさ(pixel) |
影の大きさを指定するメソッド bars/pie/stackedbarsなどの影のあるグラフ型で有効 未設定時は5 pixels |
| $graph->SetYAxisPosition($pos); |
$pos … Y軸の設置位置(データ値で入力) |
Y軸(通常はY=0)の位置を指定するメソッド ※バグっててX軸になってない? |
| $graph->SetXAxisPosition($pos); |
$pos … X軸の設置位置(データ値で入力) |
X軸(通常はX=0)の位置を指定するメソッド ※バグっててY軸になってない? |
| $graph->SetXScaleType($xst); |
$xst … X軸スケールを指定 linear … 自然数 log … 対数 |
X軸のスケールを指定するメソッド デフォルトはlinear。対数にする時にlogを指定 |
| $graph->SetYScaleType($yst); |
$yst … Y軸スケールを指定 linear … 自然数 log … 対数 |
Y軸のスケールを指定するメソッド デフォルトはlinear。対数にする時にlogを指定 |
| $graph->SetPrecisionX($prec); |
$prec … X軸目盛りの少数桁数を指定 |
デフォルトは整数表示 |
| $graph->SetPrecisionY($prec); |
$prec … Y軸目盛りの少数桁数を指定 |
デフォルトは整数表示 |
| $graph->SetErrorBarLineWidth($seblow); |
$seblow … 閾値表示線(レーダーチャートっぽいやつ)の幅 |
閾値表示線(レーダーチャートっぽいやつ)の幅を指定するメソッド |
| $graph->SetLabelScalePosition($blp); |
$blp … PlotTypeがpieの時のラベル位置 |
PlotTypeがpie(円グラフ)の時のラベル位置(水平位置)を指定 -0.7ぐらいで左端で0.7ぐらいが右端。0が真ん中? |
| $graph->SetErrorBarSize($ebs); |
$ebs … データNG時の棒の長さ? |
閾値表示線(レーダーチャートっぽいやつ)の長さを指定するメソッド? |
| $graph->SetErrorBarShape($ebs); |
$ebs … データNG時の棒の形? tee … 縦線の上下に横線も付与(Iっぽい感じ) line … 縦線のみ(|っぽい感じ) |
閾値表示線(レーダーチャートっぽいやつ)表示形式を指定するメソッド |
| $graph->SetPointShapes($pt); |
$pt … プロットする点の形状 halfline … - line … − plus … + cross … x rect … ■ circle … ● dot … ・ diamond … ◆ triangle … ▼(中心をデータに合わせる) trianglemid … ▼(下をデータに合わせる) |
プロットする点の形状を指定するメソッド 要素毎の配列渡しなので $graph->SetPointShapes('triangle','circle'); のように要素毎に指定できます。 |
| $graph->SetPointSizes($ps); |
$ps … プロットする点の大きさ |
プロットする点の大きさを指定するメソッド 要素毎の配列渡しなので $graph->SetPointSizes( 5, 3 ); のように要素毎に指定できます。 |
| $graph->SetDrawBrokenLine($bl); |
$bl … TRUE / FALSE |
欠落したデータ部の線を引くかを指定するメソッド $blをTRUEにすると線を引く(デフォルトはFALSE) |
| $graph->PadArrays(); |
なし |
内部メソッド 要素毎の色、線の太さ等の情報を次の要素にものに移動するメソッド? |
| $graph->FindDataLimits(); |
なし |
内部メソッド データの上下限を検出するメソッド |
| $graph->CalcMargins(); |
なし |
内部メソッド ラベル等のマージンを計算するメソッド |
| $graph->SetMarginsPixels($lm, $rm, $tm, $bm); |
$lm … 左マージン(pixel) $rm … 右マージン(pixel) $tm … 上マージン(pixel) $bm … 下マージン(pixel) |
プロットエリアとラベルのマージンを指定するメソッド 0のときにプロットエリア=グラフ全体になる |
| $graph->SetPlotAreaPixels($x1, $y1, $x2, $y2); |
$x1 … X軸の最小値(pixel) $y1 … Y軸の最小値(pixel) $x2 … X軸の最大値(pixel) $y2 … Y軸の最大値(pixel) |
グラフの表示粋(Xのmin〜max,Yのmin〜max)を指定するメソッド? 値はpixel値で指定? |
| $graph->CalcBarWidths(); |
なし |
内部メソッド PlotTypeがbarsの時に棒の幅を算出するメソッド? |
| $graph->CalcTranslation(); |
なし |
内部メソッド スケール(対数とか)を算出するメソッド? |
| $graph->xtr($x); |
$x … データ値 |
データ値をPHPlotのX軸描画値(pixel位置)に変換するメソッド ※DrawDashedLineメソッドで線を引く時に便利 |
| $graph->ytr($y); |
$y … データ値 |
データ値をPHPlotのY軸描画値(pixel位置)に変換するメソッド ※DrawDashedLineメソッドで線を引く時に便利 |
| $graph->FormatLabel($pos, $lab); |
$pos … ラベルの整形ルール x … X軸のデータ型で整形 y … Y軸のデータ型で整形 $lab … 整形する文字 |
ラベルの文字を整形するメソッド ※整形ルールはSetDataTypeメソッドで指定したデータ型に依存 |
| 目盛り指定系メソッド | ||
| $graph->SetXTickIncrement($ti); |
$ti … X軸の目盛り幅(データ値) |
X軸の目盛り幅を指定するメソッド 値はデータ値で指定 SetNumXTicksメソッドとは排他 |
| $graph->SetYTickIncrement($ti); |
$ti … Y軸の目盛り幅(データ値) |
Y軸の目盛り幅を指定するメソッド 値はデータ値で指定 SetNumYTicksメソッドとは排他 |
| $graph->SetNumXTicks($nt); |
$nt … X軸の目盛り数 |
X軸上に配置する目盛りの数を指定するメソッド SetXTickIncrementメソッドとは排他 |
| $graph->SetNumYTicks($nt); |
$nt … Y軸の目盛り数 |
Y軸上に配置する目盛りの数を指定するメソッド SetYTickIncrementメソッドとは排他 |
| $graph->SetYTickPos($tp); |
$tp … Y軸上の目盛り線の配置場所 plotleft : グラフ左 plotright : グラフ右 both : plotleft/plotrightの両方 yaxis : Y=0の場所 none : 表示しない |
Y軸上の目盛り線の配置場所を指定するメソッド デフォルトはplotleft |
| $graph->SetXTickPos($tp); |
$tp … X軸上の目盛り線の配置場所 plotdown : グラフ下 plotup : グラフ上 both : plotdown/plotupの両方 xaxis : Y=0の場所 none : 表示しない |
X軸上の目盛り線の配置場所を指定するメソッド デフォルトはplotdown |
| $graph->SetSkipTopTick($skip); |
$skip … TRUE / FALSE |
Y軸一番上の目盛り線の表示を指定するメソッド デフォルトはFALSE(表示する) |
| $graph->SetSkipBottomTick($skip); |
$skip … TRUE / FALSE |
Y軸一番下の目盛り線の表示を指定するメソッド デフォルトはFALSE(表示する) |
| $graph->SetSkipLeftTick($skip); |
$skip … TRUE / FALSE |
X軸一番左の目盛り線の表示を指定するメソッド デフォルトはFALSE(表示する) |
| $graph->SetSkipRightTick($skip); |
$skip … TRUE / FALSE |
X軸一番右の目盛り線の表示を指定するメソッド デフォルトはFALSE(表示する) |
| $graph->SetXTickLength($xln); |
$xln … X軸上の目盛り線の長さ(下方向) |
X軸上の目盛り線の長さ(下方向)を指定するメソッド |
| $graph->SetYTickLength($yln); |
$yln … Y軸上の目盛り線の長さ(左方向) |
Y軸上の目盛り線の長さ(左方向)を指定するメソッド |
| $graph->SetXTickCrossing($xc); |
$xc … X軸上の目盛り線の長さ(上方向) |
X軸上の目盛り線の長さ(上方向)を指定するメソッド |
| $graph->SetYTickLength($yln); |
$yln … Y軸上の目盛り線の長さ(右方向) |
Y軸上の目盛り線の長さ(右方向)を指定するメソッド |
| 描画系のメソッド | ||
| $graph->DrawBackground(); |
なし |
内部メソッド 背景を描画するメソッド |
| $graph->DrawPlotAreaBackground(); |
なし |
内部メソッド プロットエリアの背景を描画するメソッド |
| $graph->tile_img($file, $xorig, $yorig, $width, $height, $mode); |
$file … 画像ファイル名 $xorig … 配置場所(X軸) $yorig … 配置場所(Y軸) $width … 画像の配置幅 $height … 画像の配置高さ $mode … 配置方法 centeredtile … 中心に配置 tile … タイル状(繰り返し配置) scale … 領域全体にあわせる |
内部メソッド 背景画像を配置するメソッド |
| $graph->DrawImageBorder(); |
なし |
内部メソッド グラフの枠(raised/plain)を描画するメソッド 枠の指定はSetImageBorderTypeメソッドで指定 |
| $graph->DrawTitle(); |
なし |
内部メソッド グラフのタイトルを描画するメソッド |
| $graph->DrawXTitle(); |
なし |
内部メソッド グラフのX軸タイトルを描画するメソッド |
| $graph->DrawYTitle(); |
なし |
内部メソッド グラフのY軸タイトルを描画するメソッド |
| $graph->DrawYAxis(); |
なし |
内部メソッド グラフのY軸(Y=0)を描画するメソッド |
| $graph->DrawXAxis(); |
なし |
内部メソッド グラフのX軸(X=0)を描画するメソッド |
| $graph->DrawYTick($ylab, $ypix); |
$ylab … 表示するテキスト $ypix … 表示する位置(Y軸) |
内部メソッド Y軸の目盛り線(1本)を描画するメソッド DrawYTicksメソッドから呼び出される |
| $graph->DrawYTicks(); |
なし |
内部メソッド Y軸の目盛り線を描画するメソッド |
| $graph->DrawXTicks(); |
なし |
内部メソッド X軸の目盛り線を描画するメソッド |
| $graph->DrawPlotBorder(); |
なし |
内部メソッド プロットエリアの枠を描画するメソッド SetPlotBorderTypeメソッドで指定した枠で描画 |
| $graph->DrawXDataLabel($xlab, $xpos, $row); |
$xlab … ラベルに表示するテキスト $xpos … X軸の配置位置 $row … ラベルの行数(要素数)? |
内部メソッド X軸のラベル(文字)を描画するメソッド |
| $graph->DrawXDataLine($xpos, $row); |
$xpos … X軸の配置位置 $row … ラベルの行数(要素数)? |
内部メソッド X軸のラベル(線)を描画するメソッド |
| $graph->DrawLegend($x1, $y1, $boxtype); |
$x1 … X軸の配置位置 $y1 … Y軸の配置位置 $boxtype … 未実装? |
内部メソッド 要素名表示Boxを描画するメソッド |
|
なし |
未実装のメソッド |
|
| グラフ描画系のメソッド | ||
| $graph->DrawGraph(); |
なし |
グラフを描画するメソッド |
| $graph->DrawPieChart(); |
なし |
内部メソッド 円グラフを描画するメソッド |
| $graph->DrawDotError(); |
なし |
内部メソッド plot_typeがpointsかつdata_typeがdata-data-errorの時のグラフを描画するメソッド |
| $graph->DrawDots(); |
なし |
内部メソッド plot_typeがpointsかつdata_typeがdata-dataの時のグラフを描画するメソッド |
| $graph->DrawThinBarLines(); |
なし |
内部メソッド plot_typeがthinbarlineの時のグラフを描画するメソッド |
| $graph->DrawYErrorBar(); |
なし |
内部メソッド DrawDotErrorメソッド、DrawLinesErrorメソッドから呼ばれ、閾値を描画するメソッド? |
| $graph->DrawDot($x_world, $y_world, $record, $color); |
$x_world … X軸の配置位置(データ値) $y_world … Y軸の配置位置(データ値) $record … ??? $color … 点の色 |
内部メソッド プロットする点を描画するメソッド? |
| $graph->DrawArea(); |
なし |
内部メソッド plot_typeがareaの時のグラフを描画するメソッド |
| $graph->DrawLines(); |
なし |
内部メソッド plot_typeがlinesかつdata_typeがdata-data-error以外の時のグラフを描画するメソッド |
| $graph->DrawLinesError(); |
なし |
内部メソッド plot_typeがlinesかつdata_typeがdata-data-errorの時のグラフを描画するメソッド |
| $graph->DrawSquared(); |
なし |
内部メソッド plot_typeがsquaredの時のグラフを描画するメソッド |
| $graph->DrawBars(); |
なし |
内部メソッド plot_typeがbarsの時のグラフを描画するメソッド |
| $graph->DrawStackedBars(); |
なし |
内部メソッド plot_typeがstackedbarsの時のグラフを描画するメソッド |
| $graph->DrawDashedLine($x1, $y1, $x2, $y2, $dash_length, $dash_space, $color); |
$x1 … 開始点(X軸位置) $y1 … 開始点(Y軸位置) $x2 … 終了点(X軸位置) $y2 … 終了点(Y軸位置) $dash_length … 破線の色有り部分の長さ $dash_space … 破線の色無し部分の長さ $color … 破線の色 |
任意の線を描画するメソッド DrawGraphメソッド後に線を引く場合に使用 x1,y1,x2,y2はxtrメソッド、ytrメソッドでデータ値に直してセットすると便利 |
・本家
・http://tec-tech.org/phplot5/doc/index-j.php
・http://www.gadgety.net/shin/tips/unix/php-gd.html
・PHPlot 5.0rc1のソース
PHP+GDが使えない環境でもPHPlotでグラフを書きたかったのでSVG出力専用のPHPlotを作ってみた。
・本体 … phplot_svg.php
・サンプル … phplot_sample.php
PHPlotがGPLなんで、こいつもGPLでどーぞ。
基本的には呼び出し元のソース変更せずにいけるハズ。
怪しいのは
1).文字の回転(回転軸の座標がGDと微妙に違う)
2).pieグラフ(SVGだと楕円の書き方が根本的に違う)→楕円を諦めて真円で
3).日本語の扱い(UTF-8で出力すればOKっぽいけど、想定する環境がmbstringを未サポート)
4).背景画像(自分が使ってないので未サポート。ただSVGなんで実装は簡単っぽい)
ぐらいかと。
ファイル出力せずにheader()で出力するのは自分が使わないので未サポートです。
これでリソース的に「GDは無理!」な環境でもPHPさえ動けばグラフが書けます。
組込みにどうよ?

SVG出力した画面イメージ