Rでグラフを重ねる

2014-01-14 (火) 09:16:22 (3748d) | Topic path: Top / データ・マイニング / Rでグラフを重ねる

はじめに

Rでグラフを重ねる方法のメモです.

ここでは,例として,次の二つのグラフを重ねて書きます.

> set.seed(123)
> x1 = rnorm(100, mean=1, sd=0.3)
> y1 = rnorm(100, mean=1, sd=0.3)
> c1 <- cbind(x1, y1)
> colnames(c1) <- c("x", "y")
> plot(c1)
c1.png
> x2 = rnorm(100, mean=-1, sd=0.3)
> y2 = rnorm(100, mean=-1, sd=0.3)
> c2 <- cbind(x2, y2)
> colnames(c2) <- c("x", "y")
> plot(c2, pch=2)
c2.png

グラフを重ねる

グラフを描画するためのパラメーターを設定するには,par関数を使います.

グラフを重ねるにはpar関数に引数 new=T を指定しますが,そのまま重ねてしまうと次のようになります.

> plot(c1)
> par(new=T)
> plot(c2, pch=2)
new_T_only.png

確かに,そのまま重ねればこうなりますね.

表示する範囲を揃える

まず,二つのグラフの軸の範囲がそろっていないので,これをそろえます.

軸の範囲を指定するには,plot関数の引数に xlim と ylim を指定します.

> plot(c1, xlim=c(-2,2), ylim=c(-2,2))
> par(new=T)
> plot(c2, xlim=c(-2,2), ylim=c(-2,2), pch=2)
xlim_ylim.png

これでいいように見えますが,実は,同じ軸が2度描かれています. 二つのグラフを重ねるだけなら重ねていてもそんなに問題になりませんが,大量のグラフを重ねると,PDFファイルに出力したときにファイルのサイズが大きくなって,描画にも時間がかかってしまいます.

軸と軸ラベルを非表示にする

そこで,軸は一つのグラフだけに描き,その他のグラフでは軸と軸ラベルを非表示にします.

軸を非表示にするには,plot関数の引数に axes=F を指定します. 軸ラベルを非表示にするには,plot関数の引数に xlab="", ylab="" を指定します.

> plot(c1, xlim=c(-2,2), ylim=c(-2,2), axes=F, xlab="", ylab="")
xlim_ylim_axes_xlab_ylab.png

このように軸と軸ラベルなしのグラフを重ねておき,最後に軸と軸ラベル付きのグラフを重ねます.

> par(new=T)
> plot(c2, xlim=c(-2,2), ylim=c(-2,2), pch=2)
xlim_ylim_axes_xlab_ylab_par.png

これで完成です.

まとめ

Rでグラフを重ねるには,表示する範囲を揃えておき,グラフの軸と軸ラベルを非表示にして重ねておき,最後のグラフだけ軸と軸ラベルを表示して重ねます.

> plot(c1, xlim=c(-2,2), ylim=c(-2,2), axes=F, xlab="", ylab="") 
> par(new=T)
> plot(c2, xlim=c(-2,2), ylim=c(-2,2), pch=2)
xlim_ylim_axes_xlab_ylab_par.png
トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS