按选定范围绘制着色图

时间:2014-07-14 20:52:00

标签: r matrix plot

我有非常具体的范围我希望使用R中的绘图功能在同一个地块上绘制不同的颜色。

范围在矩阵中,如下所示:

x
     [,1] [,2]
[1,]    0  600
[2,]  700  900
[3,]  950 1000
[4,] 1200 1400

我有一个如下所示的数据框:

head(df)
  V1   V2  V3 V4 V5 V6
1  0 -280 -93  3  x x        
2  1 -279 -93  2  y y        
3  2 -278 -93  1  z z        

我想绘制V2列,我想在图中有5种不同颜色:1种颜色用于位置df $ V2 0-600,1种颜色用于700-900,1种颜色用于950-1000,1种颜色用于1200 -1400,以及其他不在这些范围内的颜色(例如黑色)。

我有其他大小不同的矩阵,所以理想情况下代码可以用于不同数量的范围。

2 个答案:

答案 0 :(得分:1)

这样的东西?

x1 <- matrix(c(0, 600, 700, 900, 950, 1000, 1200, 1400),
             nrow=4, ncol=2, byrow=TRUE)
y1 <- seq(-300, 2000)
plot(y1, y1, lwd=1)
for (i in 1:nrow(x1)){
    y2 <- y1[y1 >= x1[i, 1] & y1 <= x1[i, 2]]
    lines(y2, y2, col=i+1, lwd=10)
}

enter image description here

答案 1 :(得分:0)

只是为了有几个解决方案:

x1 <- matrix(c(0, 600, 700, 900, 950, 1000, 1200, 1400),
             nrow=4, ncol=2, byrow=TRUE)
y1 <- seq(-300, 2000)
a <- sapply(y1,function(i)i>=x1[,1]&i<=x1[,2])
col <- apply(a,2,function(x)ifelse(any(x),which(x),0)) #Pick which group each element belongs to, if none assigns "0".
plot(y1,col=col+1)

enter image description here