I have a data set, which I have used to make a scatter plot and I would like to assign three different colors to the data points within three different regions, based on the
Just use nested ifelse
s:
plot(...., col=ifelse(x < 3, "red", ifelse(x > 1549, "purple", "black")))
You can define a vector of colors and pass it to the col
argument of plot
. Something like this :
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)
Also, the "classic" findInterval
:
col = c("red", "black", "purple")[findInterval(x, v = c(0,3,1549))]
I like the cut
approach:
set.seed(1)
x <- sample(1600)
col <- c("red", "black", "purple")
col <- col[cut(x, breaks=c(-Inf, 3, 1549, Inf))]