【问题标题】:coloring plot by selected range按选定范围着色图
【发布时间】:2014-07-14 20:51:59
【问题描述】:

我有非常具体的范围,我想使用 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,一种颜色用于 1200 -1400,以及不在这些范围内的其他所有颜色的另一种颜色(例如黑色)。

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

【问题讨论】:

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

标签: r matrix plot


【解决方案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)
}

给予

【讨论】:

    【解决方案2】:

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

    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)
    

    【讨论】:

      猜你喜欢
      • 2013-02-16
      • 1970-01-01
      • 1970-01-01
      • 2021-05-09
      • 2013-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多