我的数据被打包成两列m(x,y)。我想制作一个三种不同颜色的散点图,它反映了y的值。所以对于x的所有值,y1低于y1(比如说1)我希望颜色为1,对于y1和y2之间的x,y的值我希望颜色为2,最后对于高于y2的y值,我希望有第三种颜色。我怎么能在R?
中实现这一点由于
答案 0 :(得分:6)
您可以使用cut
创建颜色级别,然后使用plot
中的颜色矢量。
set.seed(1104)
x = rnorm(100)
y = rnorm(100)
colors = c("blue", "red", "green")
breaks = c(y1=0, y2=1)
# first plot (given breaks values)
y.col2 = as.character(cut(y, breaks=c(-Inf, breaks, Inf), labels=colors))
plot(x, y, col=y.col2, pch=19)
# second plot (given number of breaks)
y.col = as.character(cut(y, breaks=3, labels=colors))
plot(x, y, col=y.col, pch=19)
答案 1 :(得分:4)
另一种选择是使用嵌套的ifelse
来定义颜色。
使用@Ricardo数据:
dat <- data.frame(x = rnorm(100),y = rnorm(100))
with(dat,
plot(y~x, col=ifelse(y<y1,'red',
ifelse(y>y2,'blue','green')), pch=19))