基于y值的散点图颜色

时间:2013-06-29 00:57:53

标签: r colors plot scatter-plot

我的数据被打包成两列m(x,y)。我想制作一个三种不同颜色的散点图,它反映了y的值。所以对于x的所有值,y1低于y1(比如说1)我希望颜色为1,对于y1和y2之间的x,y的值我希望颜色为2,最后对于高于y2的y值,我希望有第三种颜色。我怎么能在R?

中实现这一点

由于

2 个答案:

答案 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)

theplot

答案 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))

enter image description here