我有一个数据集,我用它来制作散点图,我想根据它们的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'))
答案 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))]