2013-04-05 81 views
5

所示的圖由以下R代碼生成。兩個具有相同X和Y軸的圖

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軸範圍。

enter image description here

+6

嘗試使用線()添加第二行。 – ndoogan 2013-04-05 13:56:24

+0

爲什麼不爲第二個使用'axes = FALSE'。 – agstudy 2013-04-05 14:44:40

回答

5

如果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)) 

使用type='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') 

enter image description here

+0

@ agstudy,@ Brian Diggs:謝謝! – chas 2013-04-07 06:27:34

3

您可以使用此方法:

  1. 繪製的第一個情節
  2. 呼叫par(new=TRUE)
  3. 畫上了第一條曲線的頂部的第二曲線。第二情節不汲取默認軸(axes=FALSE)

如果第二積有所述第一個的不同y,則可以使用axis()函數來繪製二次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) 

enter image description here

相關問題