2017-07-11 101 views
1

我發現,使用par(new = T)參數在多個繪圖期間重新縮放軸。 舉例說明:繪製多個圖 - 軸的縮放

a <- seq(1,10, by = 0.25) 
b <- sin(a) 
c <- sin(2*a)+1 
d <- sin(0.5*a)+2 
df <- data.frame(a,b,c,d) 

plot(df$a, df$b, type="l") 
par(new=T) 
plot(df$a, df$c, type="l", col="blue") 
par(new=T) 
plot(df$a, df$d, type="l", col="red") 

這就是結果。 enter image description here

而不是真正的尺度,我有一個轉換曲線。 而這纔是真正的結果是: enter image description here

我使用的參數axes=F, xlab="", ylab="",並沒有看到這個「重新調整」。 我發現它非常危險,如果你不控制y限制,在繪圖過程中轉換數據非常容易。

是否有更好的方法來控制y-限制,而不是在所有繪圖數據中查找最小值和最大值以避免這種「重新縮放」效應? 我有幾個相當大的文件,其中每個文件只給出一行中10行,我在一頁上有幾個圖表來比較我的數據。

在過去的 「正確」 的形象代碼:

plot(df$a, df$b, type="l", ylim=c(-1.5,3.5)) 
par(new=T) 
plot(df$a, df$c, type="l", ylim=c(-1.5,3.5), col="blue", axes=F, xlab="", ylab="") 
par(new=T) 
plot(df$a, df$d, type="l", ylim=c(-1.5,3.5), col="red", axes=F, xlab="", ylab="") 

回答

0
#Create an empty plot with enough xlim and ylim to accomodate all data 
plot(1, 1, xlim = range(df[,1]), ylim = range(df[,-1]), type = "n", ann = FALSE) 

#Draw the three lines 
lines(df$a, df$b) 
lines(df$a, df$c, col="blue") 
lines(df$a, df$d, col="red") 
+0

非常感謝您! – Suvar