Rで2つのグラフを同じプロットにする

y1とy2を同じプロットにしたいのですが。

x  <- seq(-2, 2, 0.05)
y1 <- pnorm(x)
y2 <- pnorm(x, 1, 1)
plot(x, y1, type = "l", col = "red")
plot(x, y2, type = "l", col = "green")

しかし、このようにすると、同じプロットに一緒にプロットされません。

Matlabでは「ホールドオン」をすることができますが,Rではどうすればいいのか誰か知りませんか?

ソリューション

lines()やpoints()は、既存のグラフに追加されますが、新しいウィンドウは作成されません。そのため、次のようにする必要があります。

plot(x,y1,type="l",col="red")
lines(x,y2,col="green")
解説 (9)

また、parを使って、同じグラフに異なる軸でプロットすることもできます。以下のようになります。

plot( x, y1, type="l", col="red" )
par(new=TRUE)
plot( x, y2, type="l", col="green" )

Rpar`について詳しく読めば、本当に面白いグラフが作れるようになるでしょう。 また、Paul Murrel's R Graphicsという本もお勧めです。

解説 (5)

基本的なグラフィックス(格子やグリッドではない)を使っている場合は、points/lines/polygons関数を使って、MATLAB'のhold on機能を模倣し、新しいプロットを開始することなく、プロットに詳細を追加することができます。マルチプロット・レイアウトの場合、par(mfg=...)を使って、どのプロットに追加するかを選択することができます。

解説 (0)