金子邦彦研究室プログラミングRuby による Web/データベース・プログラミングRuby で rsruby を用いて種々のグラフを作成

Ruby で rsruby を用いて種々のグラフを作成

r の代表的なグラフを紹介します.

R システムでの散布図,棒グラフ,円グラフ,度数分布ヒストグラム, Q-Q プロット,帯グラフを図解で説明する.

参考にした Web ページ: http://www.okada.jp.org/RWiki/?R%A4%CE%A5%B0%A5%E9%A5%D5%A5%A3%A5%C3%A5%AF%A5%B9%A5%D1%A5%E9%A5%E1%A1%BC%A5%BF (現存しない)

散布図(2つのベクトルから)

ベクトルのグラフ

棒グラフ(ベクトルから)

ベクトル V = (v1, v2, ..., vn), から,v1, v2, ..., vn の棒グラフを書く.

Ubuntu の場合の実行手順例

export R_HOME=/usr/lib/R
irb -Ku
require 'rubygems'
require 'rsruby'
T = { "x"=>[1, 2, 3, 4, 5, 6, 7, 8], "y"=>[3, 3, 4, 4, 2, 3, 4, 5] }
r = RSRuby::instance
r.eval_R(<<-RCOMMAND)
     y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
     barplot( y )
RCOMMAND

[image]

ベクトル V = (v1, v2, ..., vn), から,v1, v2, ..., vn の横向きの棒グラフを書く.

Ubuntu の場合の実行手順例

export R_HOME=/usr/lib/R
irb -Ku
require 'rubygems'
require 'rsruby'
T = { "x"=>[1, 2, 3, 4, 5, 6, 7, 8], "y"=>[3, 3, 4, 4, 2, 3, 4, 5] }
r = RSRuby::instance
r.eval_R(<<-RCOMMAND)
     y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
     barplot( y, horiz = TRUE )
RCOMMAND

[image]

円グラフ(ベクトルから)

ベクトル V = (v1, v2, ..., vn), から,v1, v2, ..., vn の円グラフを書く.

Ubuntu の場合の実行手順例

export R_HOME=/usr/lib/R
irb -Ku
require 'rubygems'
require 'rsruby'
T = { "x"=>[1, 2, 3, 4, 5, 6, 7, 8], "y"=>[3, 3, 4, 4, 2, 3, 4, 5] }
r = RSRuby::instance
r.eval_R(<<-RCOMMAND)
     y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
     pie( y )
RCOMMAND

[image]

度数分布ヒストグラム(ベクトルから)

ベクトル V = (v1, v2, ..., vn), から,ベクトルの度数分布ヒストグラムを書く.

Ubuntu の場合の実行手順例

export R_HOME=/usr/lib/R
irb -Ku
require 'rubygems'
require 'rsruby'
T = { "x"=>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "y"=>[11, 22, 33, 55, 23, 56, 34, 25, 57, 25] }
r = RSRuby::instance
r.eval_R(<<-RCOMMAND)
     y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
     hist( y )
RCOMMAND

[image]

Q-Q プロット(ベクトルから)

ベクトル V = (v1, v2, ..., vn), から,ベクトルの Q-Q plot を書く.

Ubuntu の場合の実行手順例

export R_HOME=/usr/lib/R
irb -Ku
require 'rubygems'
require 'rsruby'
T = { "x"=>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "y"=>[11, 22, 33, 55, 23, 56, 34, 25, 57, 25] }
r = RSRuby::instance
r.eval_R(<<-RCOMMAND)
     y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
     qqnorm( y )
RCOMMAND

[image]

行列のグラフ

棒グラフや帯グラフ(行列から)

行列 M = (mij) (iは行番号, jは列番号) から, 各列を1つの棒とする棒グラフを書く(積み上げ棒グラフになる).

Ubuntu の場合の実行手順例

export R_HOME=/usr/lib/R
irb -Ku
require 'rubygems'
require 'rsruby'
T = { "x"=>[10, 9, 11, 12], "y"=>[20, 22, 21, 19], "z"=>[15, 16, 18, 12] }
r = RSRuby::instance
r.eval_R(<<-RCOMMAND)
     x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
     y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
     z <- matrix( c( #{T["z"].join(",")} ), 1, #{T["z"].size} )
     barplot( rbind( x, y, z ) )
RCOMMAND

[image]

行列 M = (mij) (iは行番号, jは列番号) から, 各列を1つの棒とする横向きの棒グラフを書く(積み上げ棒グラフになる).

Ubuntu の場合の実行手順例

export R_HOME=/usr/lib/R
irb -Ku
require 'rubygems'
require 'rsruby'
T = { "x"=>[10, 9, 11, 12], "y"=>[20, 22, 21, 19], "z"=>[15, 16, 18, 12] }
r = RSRuby::instance
r.eval_R(<<-RCOMMAND)
     x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
     y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
     z <- matrix( c( #{T["z"].join(",")} ), 1, #{T["z"].size} )
     barplot( rbind( x, y, z ), horiz = TRUE )
RCOMMAND

[image]

行列 M = (mij) (iは行番号, jは列番号) から, 各列ごとに1つの棒グラフを書く.

Ubuntu の場合の実行手順例

export R_HOME=/usr/lib/R
irb -Ku
require 'rubygems'
require 'rsruby'
T = { "x"=>[10, 9, 11, 12], "y"=>[20, 22, 21, 19], "z"=>[15, 16, 18, 12] }
r = RSRuby::instance
r.eval_R(<<-RCOMMAND)
     x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
     y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
     z <- matrix( c( #{T["z"].join(",")} ), 1, #{T["z"].size} )
     barplot( rbind( x, y, z ), beside = TRUE )
RCOMMAND

[image]