R 按选定范围着色绘图

R 按选定范围着色绘图,r,matrix,plot,R,Matrix,Plot,我有非常具体的范围,我想用R中的plot函数在同一个图上用不同的颜色绘制 这些范围位于如下所示的矩阵中: 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

我有非常具体的范围,我想用R中的plot函数在同一个图上用不同的颜色绘制

这些范围位于如下所示的矩阵中:

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,另一种颜色用于不在这些范围内的所有其他颜色(例如黑色)

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

像这样的

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)
}

x1只是为了手头有几种解决方案:

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)

x1您正在绘制点吗?线?图中的x和y是什么?三行数据集不是一个非常有用的测试数据集,因为在任何指定的边界上都有一条零点线。您的范围不是闭合的。例如,当V2介于600和700之间,或介于900和950之间时,您想要什么?我正在使用plot(df$V2,type='l')绘制线。x轴只是一个索引。我正在打印的列的值范围为-300到+2000如果V2在600到700之间,我希望该绘图段的颜色不同