2016-12-02 46 views
1

我正在使用在同一張圖上繪製兩張圖的函數。我想將閾值線添加到第一個圖中,並在第二個圖上添加不同的閾值。我正在使用abline()函數來做到這一點。作爲一個例子,以chr6附帶一個庫。如何在有多個圖形時添加閾值線?

install.packages("GenWin") 
library(GenWin) 
chrom_num = 6 
jpeg(filename = paste(chrom_num, ".jpg", sep=""), width = 1200, height = 800) 
chr = splineAnalyze(chr6$Fst, chr6$Position, plotRaw = 1, plotWindows = 1, method = 4) 
abline(0.3, 0, col = "green") 
abline(6, 0, col = "green") 

兩條閾值線都顯示在第二個圖上。如何防止這一點?換句話說,有什麼方法可以指導我添加哪些圖?

回答

1

如果你想添加一些東西,我認爲自己從分析的數據chr(幾乎所有的代碼都從splineAnalyze中挑選出來)自己繪製圖形會更好。這種方法可以讓你自定義圖形。

analyzed_data <- chr # All you need to do is changing these lines and data and col names of 1st plot()). 
smoothness <- 100  # default value 

jpeg(filename = paste("file_name", ".jpg", sep=""), width = 1200, height = 800) 

par(mfrow = c(2,1)) 

    # 1st graph 
plot(Fst ~ Position, chr6, xlab = "Position (bp)", ylab = "Raw values") 
with(analyzed_data, 
    lines(x = seq(0, max(rawSpline$x), by = smoothness), 
     y = predict(rawSpline, seq(0, max(rawSpline$x), by = smoothness)), col = "red") 
) 
abline(0.3, 0, col = "green") 

    # 2nd graph 
with(analyzed_data, 
    plot(x = (windowData$WindowStop - windowData$WindowStart)/2 + windowData$WindowStart, 
     y = windowData$Wstat, xlab = "Position (bp)", ylab = "Spline Wstat", pch = 19) 
) 
abline(6, 0, col = "green") 

dev.off() 

當然,你可以用它和splineAnalyze(..., plotRaw = 1, plotWindows = 1, ...)添加線條做。

jpeg(filename = paste("file_name2", ".jpg", sep=""), width = 1200, height = 800) 

chr = splineAnalyze(chr6$Fst, chr6$Position, plotRaw = 1, plotWindows = 1, method = 4) 

abline(6, 0, col = "green") # draw on 2nd panel 
layout(matrix(c(2,1), ncol = 1))       # refocus 1st panel 
par(new = T) 
plot(Fst ~ Position, chr6, ann = F, type = "n", axes = F) # reproduce the coordinates 
abline(0.3, 0, col = "green") # draw on 1st panel 

dev.off() 

enter image description here

+0

感謝。我用第二種方式。你是如何訪問函數的源代碼的? – YKY

+1

@YKY;你可以通過'splineAnalyze'得到它(當你運行沒有'()'的函數時,它會返回代碼) – cuttlefish44