2013-10-15 29 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