我有非常具体的范围我希望使用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,以及其他不在这些范围内的颜色(例如黑色)。
我有其他大小不同的矩阵,所以理想情况下代码可以用于不同数量的范围。
答案 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)
}
给
答案 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)