付加価値コンテンツとは――スクレイピングからグラフ化までまとめサイト2.0(5/5 ページ)

» 2007年12月21日 13時10分 公開
[大澤文孝,ITmedia]
前のページへ 1|2|3|4|5       

 リスト4は比較的長く、今まで説明してきた内容の組み合わせとデータ処理となっている。このため、詳細な説明は割愛する。ただし1点だけ、「Y軸の操作」について補足しておきたい。

 図3図4を見比べるとわかるが、図4ではランキングの「1」が上になっているのに対し、図3では「10」が上になっている。

 実は、GD::Graphモジュールによる折れ線グラフでは、図3に示した「上に向けて値が大きくなるグラフ」が基本であり、図4に示した「下に向けて値が大きくなるグラフ」が描けない。

 これは、「値を負にする」ことによって、なかば強引に実現しているのだ。ソースを見ると分かるが、リスト4では、ランキング順位の「1」〜「10」の値ではなく、それを負の値とした「-1」〜「-10」としてグラフを描画している。これにより、上下逆となるのだ。

 しかし、そのままだと、Y軸のラベルの値も負になってしまう。この問題を解決するのがy_number_formatオプションだ。リスト4では、次のように設定してある。


$graph->set(
  title => 'ranking',
  line_width => 1,
  y_min_value => -10,
  y_max_value => -1,
  y_tick_number => 9,
  y_number_format => 
    sub {my $value = shift; return -$value;});

 y_number_formatはY軸ラベルを描画しようとするときに呼び出される。ここで値の正負を逆にしているので、図4に示したように、上下が逆になったグラフが描画できる。

 今回の記事では、Web::Scraperモジュールを使ったスクレイピングと、GD::Graphを使ったグラフ化について説明した。

 題材が「ブログの週間ランキング」であるということもあり、入れ替わりが激しく、グラフ化をしても遷移が把握しづらいという面もあった。しかし、これを応用して例えば「売上ランキング」や「価格変動」をグラフ化するといった場面では、今回説明した実装が、有意義に生かせるのではないだろうか?

 この先は、読者の発想で応用してみてほしい。

前のページへ 1|2|3|4|5       

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ