2012-10-24 44 views
6

組合我有以下問題:遮光某些區域在圖形 - 線和點繪圖的基礎R

set.seed(1234) 
dis = seq(1, 800, 10) 
yvar = rnorm(length (dis), 50, 10) 
myd <- data.frame (xvar = dis, yvar = yvar, yvarL = 
yvar - rnorm (length (yvar),5, 1), yvarU = yvar + rnorm (length (yvar), 5, 1)) 
plot(myd$xvar,myd$yvar,pch=19,cex=.75,col="blue") 
points(myd$xvar,myd$yvarL,col="gray", pch=19,cex=.5) 
points(myd$xvar,myd$yvarU,col="gray", pch=19,cex=.5) 

Y具有三個值 - Y,上部和下部的信心。我想在軸的兩個區間之間遮蔽。其餘的圖只是點。假設的產品圖應該類似(不完全)。

enter image description here

我怎麼能遮蔭和兩個間隔之間的生產線圖中MYD $ XVAR間650至690和210至280說。我試圖根據這篇文章(shading within xy curve plot in R)做一些聚攏裝修,但不成功。與您的數據

polygon(c(myd$xvar[1:200], myd$xvar[200:1]), c(myd$xvar[1:200], 
    myd$yvar[200:1]), col="gray") 
+1

您可能需要子集數據和情節線了一會兒點別人 – SHRram

回答

2

類似的答案史蒂芬:

plot(myd$xvar,myd$yvar,pch=19,cex=.75,col="blue") 
points(myd$xvar,myd$yvarL,col="gray", pch=19,cex=.5) 
points(myd$xvar,myd$yvarU,col="gray", pch=19,cex=.5) 
polygon(c(smyd$xvar[1:nrow(smyd)], smyd$xvar[nrow(smyd):1]), 
c(smyd$yvarL[1:nrow(smyd)], smyd$yvarU[nrow(smyd):1]), col="gray", border = NA) 
points(smyd$xvar,smyd$yvar,col="red", pch=19,cex=1.5) 
lines (smyd$xvar,smyd$yvar,col="red", pch=19,cex=1.5) 

polygon(c(smyd1$xvar[1:nrow(smyd1)], smyd1$xvar[nrow(smyd1):1]), 
c(smyd1$yvarL[1:nrow(smyd1)], smyd1$yvarU[nrow(smyd1):1]), col="yellow", border = NA) 
points(smyd1$xvar,smyd1$yvar,col="green4", pch=19,cex=1.5) 
lines (smyd1$xvar,smyd1$yvar,col="green4", pch=19,cex=1.5) 

爲您提供: enter image description here

4

的一個問題是,MYD只有80觀察,但你想要繪製200 ......只給x變量兩次到polygon()(一次作爲-,一旦以相反的順序),那麼y變量(首先是下限,然後是相反的上限)。然後,你有你的陰影:

polygon(c(myd$xvar[20:40], myd$xvar[40:20]),c(myd$yvarL[20:40], 
myd$yvarU[40:20]), col="gray") 

然而,陰影會覆蓋一些點,所以你將不得不重新繪製出來:

points(myd$xvar,myd$yvar,pch=19,cex=.75,col="blue") 
points(myd$xvar,myd$yvarL,col="gray", pch=19,cex=.5) 
points(myd$xvar,myd$yvarU,col="gray", pch=19,cex=.5) 

編輯:下面RFAN問到基於X樹蔭座標而不是索引,並在陰影區域添加一行。對於這一點,是有意義的提取相關點的指數(我們使用MYD $ XVAR排序):

index <- which(myd$xvar>=200 & myd$xvar<=400) 

然後我們情節基於此指數,如果我們需要,我們可以很容易地修改:

polygon(c(myd$xvar[index], myd$xvar[rev(index)]),c(myd$yvarL[index], 
myd$yvarU[rev(index)]), col="gray") 

現在,添加一個線路和附加分:

lines(myd$xvar[index],myd$yvar[index],pch=19,cex=.75,col="blue",type="o") 
points(myd$xvar,myd$yvarL,col="gray", pch=19,cex=.5) 
points(myd$xvar,myd$yvarU,col="gray", pch=19,cex=.5) 
+0

感謝,怎麼能在陰影區I地塊線yvar只(請參閱模型圖)。我們可以在xvar(不是20值)中設置200的邊距,這樣就可以更容易地根據xvar值對某個區域進行遮蔽 – fprd

+0

@rfan:我根據您的問題編輯了答案。這有幫助嗎? –

+0

是的,這當然是我需要的...找到索引有時比X截點難 – fprd

相關問題