2012-05-10 68 views
1

我繪製這裏染色體值在長度顯示線路黃土線散點圖,黃土無法在指定的區域

enter image description here

不加分的中間區域不包含數據,不應該得到一個黃土線。 我該如何修改我的代碼來阻止這個區域的黃土線? 數據是連續的,但我可以添加行來標記具有特殊值的空白區域或添加帶有標籤的列?但如何在命令中使用它?

我目前的命令:

library(IDPmisc) 

# plot settings (edit here) 
spanv<-0.05 
pointcol1="#E69F00" 
pointcol2="#56B4E9" 
pointcol3="#009E73" 
points=20 
linecol="green" 
xlabs=paste(onechr, " position", " (loess-span=", spanv, ")", sep="") 

data1<-NaRV.omit(data[,c(2,7)]) # keep only x and y for the relevant data 
           # and clean NA and Inf 
ylabs='E/A - ratio' 
p1<-ggplot(data1, aes(x=start, y=E.R)) + 
ylim(0,5) + 
geom_point(shape=points, col=pointcol1, na.rm=T) + 
geom_hline(aes(yintercept=1, col=linecol)) + 
geom_smooth(method="loess", span=spanv, fullrange=F, se=T, na.rm=T) + 
xlab(xlabs) + 
ylab(ylabs) 

回答

5

我會做兩件事情之一:

  1. 執行loess()擬合ggplot()外,預測這兩個區域分別與各組預測增加該圖有自己的geom_line()層。
  2. 與上面類似,但這次在ggplot()範圍內操作。將兩個圖層添加到圖中,而不是一個,都使用geom_smooth(),但重要的是將提供給每個圖層的參數更改爲僅引用一個或另一部分數據。

對於後者,或許是這樣的:

.... 
geom_smooth(data = data[1:n, ], method="loess", span=spanv, fullrange=FALSE, 
      se=TRUE, na.rm=TRUE) + 
geom_smooth(data = data[m:k, ], method="loess", span=spanv, fullrange=FALSE, 
      se=TRUE, na.rm=TRUE) 
.... 

其中nmk指的是紀念集1的結束和開始和組2的結束,該指數需要由您直接定義或提供。

+0

非常感謝您的回答。我會嘗試這個(第二個看起來更好) – splaisan

+0

第一個更好,因爲它只涉及1個調用''黃土()',並且最接近你顯示的原始圖形。對於'geom_smooth()'中單獨的'data'對象,要意識到第二個LOESS不需要和應用於整個數據集(邊緣效應等)的LOESS的擬合相同。選項1比我的想法更可取,因爲它應該是與'ggplot()'相匹配的** same **模型,您只需繪製您想要的位。 –

+1

@splaisan第三個選項值得思考。做爲選項1,但預測整個數據範圍。然後將「間隙」中的任何點設置爲「NA」。然後在單個圖層中繪製點的預測向量。這將是另一種理想的選擇方式之前,去選擇選項2. –