48. とりあえず plot()


とりあえずplot()

R で一番良く使われる高水準作図関数が関数 plot() である.最も基本的で機能も多い関数も plot() である.この関数を使って散布図や折れ線グラフなどを描くことが出来る.

例えばデータが入っているベクトル x ,y を点の座標として以下の様に入力する.すると散布図の出力が得られる.プロット範囲は引数 xlim, ylim で決めることが出来る.

 
 x <- 1:10
 y <- 1:10                # plot(x 軸のデータ, y 軸のデータ, オプション)
 plot(x, y)               # 範囲は自動で決まる(xlim=c(1,10)を指定した場合と同じ)
 plot(x, y, xlim=c(10,1)) # x 軸の正の向きを左向きにすることも出来る

また,数学関数を与えてそのグラフを出力することも出来る.

 
 plot(sin, -pi, 2*pi)                                   # plot(関数名, 下限, 上限)
 gauss.density <- function(x) 1/sqrt(2*pi)*exp(-x^2/2)  # 標準正規分布の密度
 plot(gauss.density,-3,3)

3 次元プロット

3 次元的にプロットする場合は関数 persp() を用いる.

 
 persp(x 軸のデータ, y 軸のデータ, z 軸のデータ, col = 色,
       theta = 横回転の角度, phi = 縦回転の角度, expand = 拡大率, border=NA)

例として 2 次元正規分布を描く.

 
 x <- seq(-3,3,length=50)     # x 方向の分点
 y <- x                       # y 方向の分点
 rho <- 0.9                   # 2次元正規分布の定数
 gauss3d <- function(x,y) {   # 2次元正規分布の関数
   1/(2*pi*sqrt(1-rho^2))*exp(-(x^2-2*rho*x*y+y^2) / (2*(1-rho^2)))
 }
 z <- outer(x,y,gauss3d)      # 外積をとって z 方向の大きさを求める
 z[is.na(z)] <- 1             # 欠損値を1で補う
 persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "lightblue")

plot() の形式指定

関数 plot() の引数 type によって様々な形式でプロットすることが出来る.type には次の 9 種類の文字のいずれかを指定することが出来る.

引数

機能

type="p"

点プロット(デフォルト)

type="l"

線プロット(折れ線グラフ)

type="b"

点と線のプロット

type="c"

"b" において点を描かないプロット

type="o"

点プロットと線プロットの重ね書き

type="h"

各点から x 軸までの垂線プロット

type="s"

左側の値にもとづいて階段状に結ぶ

type="S"

右側の値にもとづいて階段状に結ぶ

type="n"

軸だけ描いてプロットしない(続けて低水準関数でプロットする場合)

以下に例を示す.

 
 x <- rnorm(10)
 plot(x, type="l") 

対数軸や軸の範囲の指定

軸に関する設定を行なう為に以下の引数を追加することが出来る.

引数

機能

log="x"

"x" ( x 対数軸) ,"y" ( y 対数軸) ,"xy" (両対数軸) の何れかを指定することが出来る (対数は常用対数のみ) .

xlim=c(0, 1),ylim=c($-1$, 1)

長さ 2 のベクトルで x 座標, y 座標の最小値と最大値を与える,他にも xlog, ylog で対数プロットが出来る.ベクトルを降順に並べる (例:c(2, -2)) と,プロットの向きが逆になる.

axes=FALSE

軸の生成を抑制する.軸の他に表題,刻み,目盛も描くかどうかを論理値で指定する(省略時は TRUE).他に xaxs, yaxs が指定出来る.

以下に例を示す.

 
 x <- rnorm(10)
 plot(x, ylim=c(-30, 30), type = "l")

タイトルなどの指定

表題などに関する設定を行なう為に以下の引数を追加することが出来る.

引数

機能

main="Title"

タイトルを与える文字列を指定する.この引数を省略するとは表題は描かれない.

sub="SubTitle"

サブタイトルを与える文字列を指定する.この引数を省略すると副題は描かれない.

xlab="X-Label",ylab="Y-Label"

それぞれ x 座標名, y 座標名を与える文字列を指定する.省略すると,x 軸のデータとして与えられた引数の名前が座標名として描かれる.

ann = F

軸のラベルを描かないようにすることも出来る ( xlab = "" ,ylab = "" を同時に指定した場合と同じ.) .

tmag=1.2

プロットの別の注釈するテキストに関する主なタイトルのテキストの拡大率を指定する.

以下に例を示す.

 
 x <- rnorm(10)
 plot(x, main="Simple Time Series")

図の消去

プロットした図を消去するには関数 frame() または関数 plot.new() を使う.

 
 frame()
 plot.new()  

グラフィックスパラメータ new が TRUE ならば図は消去されない.