PEAR::Image_Graphによるローソク足描写
ちょっと作ってたのでご紹介。
データベースに保存されている情報は
1. 証券コード
2. 日付
3. 市場
4. 始値
5. 高値
6. 安値
7. 終値
8. 出来高
です。
指定された証券コードに対して日付順でデータを取り出し、
今回ちょっと困ってたのが、
「ファイル名を指定して保存」するのをどうするか。。。
デフォルトの
を使うと、ブラウザ上には表示できるけど(そういうヘッダを送信しちゃいます)、
名前をつけて保存ができない。
というわけで、
こうしました。
こうすれば、graph/ディレクトリに保存されます(もちパーミッションの設定が必要。
tohtml を true に設定しているので、
返り値は、HTMLタグです。(<img src= ... >)
PHPで画像生成ができるようになるとすごい便利。
一応実装はコチラ↓
http://labs.sotaro-k.com/stock.php
※自宅サーバなので、サーバ起動してるときしか見れません。
※もしかしたらリンク切れになってるかもしれません。
データベースに保存されている情報は
1. 証券コード
2. 日付
3. 市場
4. 始値
5. 高値
6. 安値
7. 終値
8. 出来高
です。
指定された証券コードに対して日付順でデータを取り出し、
// もちろん $row にはDBから読み出したデータが入ってる。
// 今回はPEAR::DBも使ってみた。
foreach ($row as $key => $val) {
// addPoint Methodを使って描写ポイントを。
$Dataset->addPoint(
date('y-m-d', strtotime($key)),
array(
'min' => $val['yasu'],
'open' => $val['hajime'],
'close' => $val['owari'],
'max' => $val['taka']
)
);
// maxとminを置き換える(y軸描写範囲を決めるため)
if( $i== 0 ){
$minimum = $val['yasu'];
$maximum = $val['taka'];
} else {
if($minimum > $val['yasu'] && $val['yasu'] != 0) $minimum = $val['yasu'];
if($maximum > $val['taka']) $maximum = $val['taka'];
}
$i++;
if ($i == 100) break; // 描写数でbreak(このへん超手抜き)
}
今回ちょっと困ってたのが、
「ファイル名を指定して保存」するのをどうするか。。。
デフォルトの
$Graph->done();
を使うと、ブラウザ上には表示できるけど(そういうヘッダを送信しちゃいます)、
名前をつけて保存ができない。
というわけで、
$out = $Graph->done(
array(
'tohtml' => true,
'border' => 1,
'filename' => 'example.jpg',
'filepath' => './graph/',
'urlpath' => './graph/'
)
);
こうすれば、graph/ディレクトリに保存されます(もちパーミッションの設定が必要。
tohtml を true に設定しているので、
返り値は、HTMLタグです。(<img src= ... >)
PHPで画像生成ができるようになるとすごい便利。
一応実装はコチラ↓
http://labs.sotaro-k.com/stock.php
※自宅サーバなので、サーバ起動してるときしか見れません。
※もしかしたらリンク切れになってるかもしれません。






