7

示されているプロットは、次の R コードによって生成されます。

png("test.png")
plot(data[,4],data[,3],type='l',col="green")
par(new=TRUE)
plot(data[,4],data[,2],type='l',col="red")
dev.off()

Y 軸の範囲は両方のプロットで異なり、画像に示すように上書きされます。誰かが両方のプロットに同じ Y 軸範囲を設定するのを手伝ってくれませんか?

ここに画像の説明を入力

4

2 に答える 2

7

y スケールが大きく重なっている場合は、(何もプロットせずに) 全範囲を含む最初のプロットを作成して軸を定義してから、線をプロットします。

set.seed(5)
data <- data.frame(1:60, rnorm(60, 0.6, 0.1), rnorm(60, 0.65, 0.15), 
                   seq(2,120,by=2))

Usingtype='n'は軸を設定しますが、何もプロットしません。すべてのデータの範囲を使用すると、プロットにすべてのデータが含まれるようになります。

plot(range(data[,4]), range(c(data[,3],data[,2])), type='n')
lines(data[,4], data[,3], type='l', col='green')
lines(data[,4], data[,2], type='l', col='red')

ここに画像の説明を入力

于 2013-04-05T15:31:05.580 に答える
5

この方法を使用できます:

  1. 最初のプロットを描く
  2. 電話par(new=TRUE)
  3. 最初のプロットの上に 2 番目のプロットを描画します。2 番目のプロットはデフォルトの軸を描画しません(axes=FALSE)

2 番目のプロットの y が最初のプロットの y と異なる場合、axis()関数を使用して 2 番目の y 軸を右側に描画し、スケールを表すことができます。

たとえば、次のようなことができます。

 data <- matrix(rnorm(4*100),ncol=4)
 par(mar=c(5, 6, 2, 4))
 plot(1:100,data[,3], lwd=3, col="green", ann=FALSE, las=2,type='l')
 mtext("I am at left", side=2, line=3.5)
 par(new=TRUE)
 plot(1:100,data[,2], ann=FALSE, axes=FALSE,col='red',type='l')
 mtext("I am at right)", side=4, line=2)
 title("Using par(new=TRUE) \n same X and different or not Y axis ")
 axis(4)

ここに画像の説明を入力

于 2013-04-05T14:43:23.270 に答える