ブログトップ 記事一覧 ログイン 無料ブログ開設

サンプルコードによるPerl入門 〜 伝統と信頼のPerlを学ぼう 〜

2013-11-06

簡単なグラフの作成 / PDLによる統計解析

 PDLでグラフを描画してみましょう。グラフを描画するために、PDL::Graphics::PLplotというモジュールを使います。

一次関数のグラフ

 ではまず最初に一番簡単な「y = 2x」という一次関数のグラフを描いてみましょう。xyのグラフを作成するにはxyplotメソッドを使用します。

use PDL::Lite;
use PDL::Graphics::PLplot;

# PLPlotオブジェクトの作成(PNG形式でgraph.pngという名前で出力)
my $pl = PDL::Graphics::PLplot->new(DEV => 'png', FILE => 'graph.png');

# xの値として0〜99までを表すPDL変数を作成
my $x  = pdl->sequence(100);

# y = 2x
my $y = 2 * $x;

# グラフを作成
$pl->xyplot($x, $y);

# クローズ
$pl->close;

 次のように1次関数のグラフを作成することができます。

f:id:perlcodesample:20131106082618p:image:w500

newのオプション

 グラフのオプションをいくつか紹介しておきます。newメソッドの引数として渡すことができます。

my $pl = PDL::Graphics::PLplot->new(
  DEV => 'png',
  FILE => 'graph.png',
  PAGESIZE => [500, 400]
);
グラフのサイズ

 PAGESIZEで出力するグラフのサイズを指定できます。

PAGESIZE => [500, 400]

グラフを描画するときのオプション

 グラフを描画するときに指定するオプションです。

$pl->xyplot($x, $y, XLAB => 'x', YLAB => 'y');
x軸のラベル

 XLABでx軸のラベルを指定できます。

XLAB => 'x'
y軸のラベル

 YLABでy軸のラベルを指定できます。

YLAB => 'y'
描画領域

 BOXオプションで描画領域を指定できます。

BOX => [xの開始, xの終了, yの開始, yの終了]

 以下のように指定します。

BOX => [0, 150, 0, 300]
x軸の目盛りラベルの幅

 XTICKでx軸の目盛りラベルの幅を指定できます。

XTICK => 10
y軸の目盛りラベルの幅

 YTICKでy軸の目盛りラベルの幅を指定できます。

YTICK => 10
タイトル

 TITLEでグラフのタイトルを指定することができます。

TITLE => 'y = 2x'
ビューポート

 VIEWPORTでグラフを実際にどの部分に描画するかを指定できます。0〜1の割合で指定します。

VIEWPORT => [xの最小値の位置, xの最大値の位置, yの最小値の位置, yの最大値の位置]

 以下のように指定します。

VIEWPORT => [0.1, 0.5, 0.1, 0.5]
x軸を描画する

 x軸を描画するにはXBOXbcnstaを指定します。この値のデフォルトはbcnstaを加えると、x軸を描画できます。

XBOX => 'bcnsta',
x軸を描画する

 y軸を描画するにはYBOXbcnstaを指定します。この値のデフォルトはbcnstaを加えると、y軸を描画できます。

YBOX => 'bcnsta',
グラフの色

 COLORでグラフの色を指定できます。

COLOR => 'RED'

 以下が色の種類です。

  BLACK        GREEN        WHEAT        BLUE
  RED          AQUAMARINE   GREY         BLUEVIOLET
  YELLOW       PINK         BROWN        CYAN
  TURQUOISE    MAGENTA      SALMON       WHITE
  ROYALBLUE    DEEPSKYBLUE  VIOLET       STEELBLUE1
  DEEPPINK     MAGENTA      DARKORCHID1  PALEVIOLETRED2
  TURQUOISE1   LIGHTSEAGREEN SKYBLUE     FORESTGREEN
  CHARTREUSE3  GOLD2        SIENNA1      CORAL
  HOTPINK      LIGHTCORAL   LIGHTPINK1   LIGHTGOLDENROD

サンプル

 「y = 1/2 x + 10」という一次関数のグラフを書いてみました。

f:id:perlcodesample:20131106082619p:image:w500

use PDL::Lite;
use PDL::Graphics::PLplot;

# PLPlotオブジェクトの作成(PNG形式でgraph.pngという名前で出力)
my $pl = PDL::Graphics::PLplot->new(
  DEV => 'png',
  FILE => 'graph.png',
  PAGESIZE => [600, 300],
);

# xの値として0〜99までを表すPDL変数を作成
my $x  = pdl->sequence(100) - 50;

# y = 2x
my $y = (1/2) * $x + 10;

# グラフを作成
$pl->xyplot(
  $x,
  $y,
  XLAB => 'x',
  YLAB => 'y',
  TITLE => 'y = 1/2 x + 10',
  XBOX => 'bcnsta',
  YBOX => 'bcnsta',
  COLOR => 'RED',
  JUST => 1
);

# クローズ
$pl->close;


PDLによる統計解析

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/perlcodesample/20131106/1383694110