<<目次へ


値によってcolやpchを変えてプロットする



 例えばこんな図を描いてみる。

> x <- rnorm(100)
> y <- rnorm(100)
> plot(x, y)


 yの値が0以上であるものを黒で、0未満であるものを赤で塗り別けたいとします。そういうとき、簡単な方法として2つあります。

# 方法その1 ifelse()を使う
> plot(x, y, col=ifelse(y >= 0, 1, 2))

# 方法その2
> plot(x, y, col=(y>=0)+1)
> plot(x, y, col=c("black", "red")[(y>=0)+1])


方法その1で描いたグラフ
方法その2で描くと、0以上が赤、0未満が黒になる。
それについては、以下の説明を読めば分かる。
もちろん、方法2でこのグラフを同じようにする方法も。


 上の2例について少し補足。

 iflese(y >= 0, 1, 2)というのは、「yの値が0以上ならば1、そうでなければ2」という意味です。簡単な数値例で確認してみます。

> z <- 0:10

# 5以上なら1、そうでなければ2
> ifelse(z>=5, 1, 2)
 [1] 2 2 2 2 2 1 1 1 1 1 1


 (y>=0)+1とすると、上のifelse()を使った場合と同じようなことができます。

> (z >= 5) + 1
 [1] 1 1 1 1 1 2 2 2 2 2 2

 これはどういうことか?

# z>=5をとりあえずaに代入してみる
> a <- z>=5

# aは論理型のベクトルであることがわかる
> a
 [1] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
> is.logical(a)
[1] TRUE

# 論理型のベクトルに数値を"足す"とこうなる
> a + 1
 [1] 1 1 1 1 1 2 2 2 2 2 2
> a + 0.5
 [1] 0.5 0.5 0.5 0.5 0.5 1.5 1.5 1.5 1.5 1.5 1.5
> a + -1
 [1] -1 -1 -1 -1 -1  0  0  0  0  0  0