MW211 EXIT

devlog
PHP/データ量の多い折れ線グラフ描画
2011年10月19日
X軸一目盛に対してY軸の値が一つずつ並んでいるような配列があるとする。

例えばGDを使って以下のように折れ線グラフを描画したりできるような配列だ。
┌──────────────────────────────────────┐
│for ($x = 1; $x < 100; $x++) {                                              │
│  imageline(出力先, $x - 1, $y[x - 1], $x, $y[x], 色);                      │
│}                                                                           │
└──────────────────────────────────────┘

このデータが10倍になったけど描画する領域がそのままの場合。
つまり描画できる横幅よりもデータが多い場合に、
1/10に圧縮して、ローソク足グラフのように、縦幅のあるグラフを描画する方法。
┌──────────────────────────────────────┐
│for ($x = 0; $x < 1000; $x++) {                                             │
│  $y1 = min(array_slice($y, $x, 10));                                       │
│  $y2 = max(array_slice($y, $x, 10));                                       │
│  imageline(出力先, $x, $y1, $x, $y2, 色);                                  │
│}                                                                           │
└──────────────────────────────────────┘
上記のような感じで、「min()、max()、array_slice()」を駆使すればよい。
これで、最小値から最大値までの縦幅のもつ線が横にずらっと並んでいく。
まるで、横に押しつぶしたかのようにだ。
分類:PHP