2013-10-15 27 views
5

我有一個數據集,我用它來製作散點圖,我想根據它們的x來爲三個不同區域內的數據點分配三種不同的顏色值。使用條件語句更改數據點的顏色

與x值的數據點< 3 I希望出現與x值紅色

數據點(3,1549)我想與x值> 1549我希望出現黑色

數據點出現紫色

這裏是我的scatterplot和完成前兩個參數的代碼,我該如何實現第三個參數,以便最後一個區域的數據點是紫色的?

plot(x, y, xlab="chr X position (Mb)", 
      ylab="Diversity", 
      pch=16, cex =0.7, 
      col = ifelse(x < 3,'red','black'))  

enter image description here

回答

6

只需使用嵌套ifelse S:

plot(...., col=ifelse(x < 3, "red", ifelse(x > 1549, "purple", "black"))) 
3

您可以定義顏色的載體,它傳遞給的plotcol說法。事情是這樣的:

colors <- rep("black", length(x)) 
colors[x<3] <- "red" 
colors[x>1549] <- "pink" 

plot(x, y, xlab="chr X position (Mb)", 
      ylab="Diversity", 
      pch=16, cex =0.7, 
      col = colors)  
+0

這對我很有幫助。謝謝:) – AbhinavVinay

3

我喜歡cut方法:

set.seed(1) 
x <- sample(1600) 
col <- c("red", "black", "purple") 
col <- col[cut(x, breaks=c(-Inf, 3, 1549, Inf))] 
4

此外, 「經典」 findInterval

col = c("red", "black", "purple")[findInterval(x, v = c(0,3,1549))]

+0

這比'cut'更好!感謝您的參與。 – sgibb