玄箱でGD::Graph

最近、WEBでデータをグラフ表示することが多い。

今のところは、PHP&JPGraphを使うことが多いのだが、Perlでのグラフ作成もできるようにしておこうかと思って調べてみると、GD::Graphというモジュールがあるらしい。

じゃあ、こいつを使ってグラフを作成してみよう。

環境:

うーん。。。いまどき、こんな環境使ってる人いるんだろか?(笑)

GD::Graphをインストールしようとしてみる。

#perl -MCPAN 'install GD::Graph'
すると、「GDがアカンで」といわれる。

#perl -MCPAN 'install GD'
「libgdのバージョンがダメ」って言われる。

#apt-get install libgd-gd2-perl
してからやってみても変わらない。

#apt-get install libgd2-noxpm
とやって、その後
#perl -MCPAN 'install GD'
したらOK。

#perl -MCPAN 'install GD::Graph'
やっと入ったよ。

入ったら早速テスト。

前提:

  • コードを置くフォルダはCGIが実行可能であること。
  • CGIは .cgi .pl で実行可能であること
  • /usr/share/fonts/truetype/ttf-ipaIPAフォントを配置してある

ここで、http://www.gadgety.net/shin/tips/unix/perl-gd.html
のサンプルコードを元に、

#!/usr/bin/perl -w
use strict;
use Jcode;

use GD::Graph::bars;

my @labels = qw( under 10s 20s 30s 40s 50s 60s 70s over );
my @dataset = qw( 20 40 60 80 65 15 10 20 5 );
my @data = ( \@labels, \@dataset);

my $graph = GD::Graph::bars->new( 400, 300 );

$graph->set( title => jcode("にこにこ村の人口")->utf8,
y_label => jcode("人数")->utf8 );


GD::Text->font_path( "/usr/share/fonts/truetype/ttf-ipa" );

my $font="ipaexg.ttf";

$graph->set_title_font( $font, 14 );
$graph->set_legend_font( $font, 8 );
$graph->set_x_axis_font( $font, 8 );
$graph->set_x_label_font( $font, 10 );
$graph->set_y_axis_font( $font, 8 );
$graph->set_y_label_font( $font, 8 );

my $image = $graph->plot( \@data );

open( OUT, "> graph.jpg") or die( "Cannot open file: graph.jpg" );
binmode OUT;
print OUT $image->jpeg();
close OUT;

print "Content-type: text/html\n\n";

print "\n";
print "\n";
print "<img src='./graph.jpg'>\n";
print "\n";
print "\n";

というコードを、

で保存して、ブラウザから、該当ファイルを叩いてみると、
グラフが表示されるはず。