使用条件语句更改数据点的颜色

时间:2013-10-15 07:56:55

标签: r colors conditional-statements scatter-plot

我有一个数据集,我用它来制作散点图,我想根据它们的x值为三个不同区域内的数据点分配三种不同的颜色。

具有x值的数据点< 3我想要显得红色

带x值的数据点(3,1549)我想显示为黑色

x值> 1549的数据点我想要显示紫色

这是我的散点图代码并完成前两个参数,我如何实现第三个参数,以便最后一个区域的数据点是紫色的?

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

4 个答案:

答案 0 :(得分:6)

只需使用嵌套的ifelse s:

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

答案 1 :(得分:4)

此外,“经典”findInterval

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

答案 2 :(得分:3)

您可以定义颜色矢量并将其传递给col plot参数。像这样:

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)    

答案 3 :(得分:3)

我喜欢cut方法:

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