5

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

在此处输入图像描述

4

4 回答 4

6

只需使用嵌套ifelse的 s:

plot(...., col=ifelse(x < 3, "red", ifelse(x > 1549, "purple", "black")))
于 2013-10-15T08:03:20.970 回答
4

此外,“经典” findInterval

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

于 2013-10-15T08:24:42.817 回答
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)    
于 2013-10-15T08:00:17.793 回答
3

我喜欢这种cut方法:

set.seed(1)
x <- sample(1600)
col <- c("red", "black", "purple")
col <- col[cut(x, breaks=c(-Inf, 3, 1549, Inf))]
于 2013-10-15T08:04:35.420 回答