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