2014/05/28(水)Perl Data Language グラフィック編 #01 & 統計編 #01 「PDL::Graphics::PLplotのインストールとヒストグラムの描画

PDLのグラフ描画ライブラリは↓のようにいろいろあります。

PDL::Graphics::Gnuplot
PDL::Graphics::PGPLOT
PDL::Graphics::Prima
PDL::Graphics::PLplot

PGPLOTはまともにインストールできなかったので、「The PDL Book」に載っていてライセンスがLGPLで速度も問題なさそうなPLplotを選択しました。

スライドシェアに資料もあります。「https://www.slideshare.net/dcmertens/p-lplot-talk

使う前にまずは、plplotをインストールする必要があります。以下のコマンドでインストールできます。

sudo apt-get install libplplot11
sudo apt-get install libplplot-dev
(↑がないと PDL::Graphics::PLplot インストール時に libplplotd.so がないと怒られる)
sudo apt-get install libplplot-driver-cairo
sudo apt-get install libplplot-driver-xwin

cpanm PDL::Graphics::PLplot

libplplotのドライバーはいろいろあるので、インストールして試してみるといいかもです。

グラフ描画は↓のような感じです。

DEVオプションはいろいろ指定できるけど、ウィンドウに表示するならUnicode対応の「xcairo」がキレイで日本語も表示できてオススメです。Max OSだとAquaTerm Driverっていうドライバーもあるようです。

#!/usr/bin/env perl

use strict;
use warnings;
use feature qw/say/;
use PDL;
use PDL::Graphics::PLplot;
use DDP filters => { -external => [ 'PDL' ] };

my $pl = PDL::Graphics::PLplot->new(
    DEV   => 'xcairo',
    TITLE => 'N(0,1) に従う乱数',
    XLAB  => '乱数の値',
    YLAB  => '度数',
    COLOR => 'BLUE',
);

my $data     = grandom(10000); # 平均ゼロ、標準偏差1の乱数
my $nbins    = 30;
my $binwidth = ($data->max - $data->min) / $nbins;

my ($x, $y) = hist($data, $data->minmax, $binwidth);

$pl->histogram($data, $nbins, BOX => [ $x->minmax, 0, $y->max * 1.1 ]);

$pl->close;

graph