use GD::Graph::linespoints;
# グラフ化するデータ
my @data = (
# 1つ目はX軸のラベル値
['12/1', '12/2', '12/3', '12/4'],
# 2つ目以降がデータ。
# それぞれの要素がひとつのグラフになる
# ここでは4つあるから4本の線が引かれる
[1, 3, 4, 5],
[2, 5, undef, 7],
[7, 10, 6, 5],
[undef, 10, 7, 3]
);
# グラフオブジェクトを作る
my $graph =
GD::Graph::linespoints->new(640, 480);
# オプション設定
$graph->set(
title => 'test',
line_width => 1,
y_min_value => 1,
y_max_value => 10,
y_tick_number => 9,
);
# データを渡してプロット
my $gd = $graph->plot(\@data);
open OUT, ">graphimage.png";
binmode OUT;
print OUT $gd->png();
close OUT;
GD::Graph::linespointsを使って折れ線グラフを描く場合、データの構造は、「1つ目がX軸ラベル」「2つ目以降が実データ列」という構造のリファレンスを渡す。
my @data = (
# 1つ目はX軸のラベル値
['12/1', '12/2', '12/3', '12/4'],
# 2つ目以降がデータ。
[1, 3, 4, 5],
[2, 5, undef, 7],
[7, 10, 6, 5],
[undef, 10, 7, 3]
);
この時、すべての要素の数が揃っていなければならない。描画したくない値が存在するときには、上記のようにundef値を設定する。
グラフを作るには、まず、GD::Graph::linepointsオブジェクトを用意する。コンストラクタ引数に渡すのは、作成する画像イメージの大きさだ。ここでは解像度を640×480ドット指定とした。
my $graph =
GD::Graph::linespoints->new(640, 480);
次にsetメソッドを呼び出して必要なオプションを設定する。ここではタイトルや線幅、最小値、最大値、軸の目盛間隔を指定した。
$graph->set(
title => 'test',
line_width => 1,
y_min_value => 1,
y_max_value => 10,
y_tick_number => 9,
);
実際にプロットするには、plotメソッドを呼び出す。
my $gd = $graph->plot(\@data);
plotメソッドの戻り値は、GDオブジェクトとなる。そこで、pngメソッドやjpegメソッドを呼び出して、ファイルなどに書き込めばよい。
open OUT, ">graphimage.png";
binmode OUT;
print OUT $gd->png();
close OUT;
以上がグラフ生成の基本的な流れだ。
「スクレイピングの結果」と「グラフ化処理」を組み合わせれば、週刊ランキング推移のグラフができる。実際に、その処理を実装したのが、リスト4だ。
そして、図4を生成するスクリプトが、次ページに載せるリスト4である。
Copyright © ITmedia, Inc. All Rights Reserved.