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

Ruby で rsruby を用いてグラフ作成するときの各種パラメータ

このページでは, R で 2 次元の散布図を作成する関数である plot() 関数を例として, 各種パラメータを図解で説明する

R システムでのグラフ作成では,各種パラメータを使って,グラフを細かく調整することができる.このページでは, 点と折れ線の重ね合わせタイトル付けx,y値の範囲対数目盛りxy比グラフィックパラメータ (点の色や大きさや形,線の色やスタイルや太さ)を調整する手順を図解で示す.

plot() 関数の実行例

まずは,plot() 関数を使い,x, y 値を指定しての散布図の作成を行う.

x 値を格納したベクトル,y 値を格納したベクトルを引数として plot() 関数を使うと,散布図が描かれます.

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)
     x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
     y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
     plot( x, y )
RCOMMAND

[image]

種々の散布図

  1. 折れ線

    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)
         x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
         y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
         plot( x, y, type="l" );
    RCOMMAND
    

    [image]
  2. 点と折れ線(点と折れ線が重ならない)
    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)
         x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
         y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
         plot( x, y, type="b" );
    RCOMMAND
    

    [image]
  3. 折れ線(「点」があると思って,折れ線が「点」と重ならないように)
    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)
         x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
         y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
         plot( x, y, type="c" );
    RCOMMAND
    

    [image]
  4. 点と折れ線の重ね合わせ
    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)
         x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
         y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
         plot( x, y, type="o" );
    RCOMMAND
    

    [image]

タイトル付け

  1. メインタイトルとサブタイトル

    mainsub を使用. メインタイトルはグラフの上に,サブタイトルはグラフの下に書かれる.

    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)
         x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
         y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
         plot( x, y, xlab="x軸のタイトル", sub="y軸のタイトル" )
    RCOMMAND
    

    [image]
  2. x 軸のタイトルとy 軸のタイトル

    xlabylab を使用.

    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)
         x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
         y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
         plot( x, y, xlab="x軸のタイトル", ylab="y軸のタイトル" )
    RCOMMAND
    

    [image]
  3. タイトルとして数式を表示

    expression オブジェクトを使う.

    export R_HOME=/usr/lib/R
    irb -Ku
    require 'rubygems'
    require 'rsruby'
    r = RSRuby::instance
    r.eval_R(<<-RCOMMAND)
        X <- seq(1, 5, length=100)
        Y <- exp(-.5 * log( X^2 ) )
        plot(X, Y, type="o", xlab="x", ylab=expression(e^{-frac(1,2) * {log[10](x)}^2}) )
    RCOMMAND
    

    
    

    [image]

x,y値の範囲,対数目盛り,xy比

  1. x,y値の範囲
    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)
         x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
         y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
         plot( x, y, xlim=c(0,10), ylim=c(0,6) )
    RCOMMAND
    

    [image]
  2. x軸を対数目盛り
    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)
         x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
         y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
         plot( x, y, log="x" )
    RCOMMAND
    

    [image]
  3. y軸を対数目盛り
    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)
         x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
         y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
         plot( x, y, log="y" )
    RCOMMAND
    

    [image]
  4. x, y軸を対数目盛り
    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)
         x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
         y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
         plot( x, y, log="xy" )
    RCOMMAND
    

    [image]
  5. 補助線 (格子状)
    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)
         x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
         y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
         plot( x, y, panel.first=grid(8,8) )
    RCOMMAND
    

    [image]
  6. 補助線 (なめらかな折れ線)
    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)
         x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
         y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
         plot( x, y, panel.first = lines(stats::lowess( x, y ), lty="dashed") )
    RCOMMAND
    

    [image]
  7. xy比
    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)
         x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
         y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
         plot( x, y, asp="0.4" )
    RCOMMAND
    

    [image]

グラフィックパラメータ

  1. 点や線の色
    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)
         x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
         y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
         plot( x, y, type="o", col="red" )
    RCOMMAND
    

    [image]
  2. 点の四角形に変更
    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)
         x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
         y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
         plot( x, y, type="o", pch = 0 )
    RCOMMAND
    

    [image]
  3. 点の大きさ
    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)
         x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
         y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
         plot( x, y, type="o", cex=4 )
    RCOMMAND
    

    [image]
  4. 線のスタイル(破線)
    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)
         x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
         y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
         plot( x, y, type="o", lty=2 )
    RCOMMAND
    

    [image]
  5. 線のスタイル(点線)
    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)
         x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
         y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
         plot( x, y, type="o", lty=3 )
    RCOMMAND
    

    [image]
  6. 線のスタイル(破線)
    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)
         x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
         y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
         plot( x, y, type="o", lty=5 )
    RCOMMAND
    

    [image]
  7. 線のスタイル(破線)
    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)
         x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
         y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
         plot( x, y, type="o", lty=5 )
    RCOMMAND
    

    [image]
  8. 線の太さ
    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)
         x <- matrix( c( #{T["x"].join(",")} ), 1, #{T["x"].size} )
         y <- matrix( c( #{T["y"].join(",")} ), 1, #{T["y"].size} )
         plot( x, y, type="o", lwd=4 )
    RCOMMAND
    

    [image]

(参考)plot() 関数のヘルプ

Usage

plot(x, y, ...)

Arguments

See Also plot.default, plot.formula and other methods; points, lines, par.

(参考)plot.default() 関数のヘルプ

Usage

plot(x, y = NULL, type = "p",  xlim = NULL, ylim = NULL,
     log = "", main = NULL, sub = NULL, xlab = NULL, ylab = NULL,
     ann = par("ann"), axes = TRUE, frame.plot = axes,
     panel.first = NULL, panel.last = NULL, asp = NA, ...)

Arguments

Usage

Commonly used graphical parameters are:

References

See Also plot, plot.window, xy.coords.