具有NA的线之间的基色R

具有NA的线之间的基色R,r,ggplot2,shiny,R,Ggplot2,Shiny,在以下两个约束条件下,是否有可能使用底R对两条线之间的区域进行着色: 我不能使用ggplot2,因为我的应用程序的其他部分无法工作(存在clickId限制;更具体地说,使用ggplot2的clickId不会给出数据的实际x和y值) 我也不能使用polygon,因为NAs存在于我的数据中,这使得polygon创建的“阴影”过早关闭 以下是SSCCE(不包括组件): 您可以按na值分割数据,然后对分割的数据使用polygon。我首先创建一个data.frame。然后,您可以在NA上拆分数据.fr

在以下两个约束条件下,是否有可能使用底R对两条
线之间的区域进行着色:

  • 我不能使用
    ggplot2
    ,因为我的应用程序的其他部分无法工作(存在
    clickId
    限制;更具体地说,使用
    ggplot2
    clickId
    不会给出数据的实际x和y值)
  • 我也不能使用
    polygon
    ,因为
    NA
    s存在于我的数据中,这使得
    polygon
    创建的“阴影”过早关闭
以下是SSCCE(不包括
组件):


您可以按na值分割数据,然后对分割的数据使用
polygon
。我首先创建一个
data.frame
。然后,您可以在
NA
拆分
数据.frame
,并使用
NA.ommit
省去
NA
值。最后使用
lappy
polygon
绘制数据

df <- data.frame(time = vals_time, 
                 l1 = vals_line1, 
                 l2 = vals_line2)
plot(x = df$time, y = df$l1, type = "l", ylim = c(0, 11))
lines(x = df$time, y = df$l2)
lst <- lapply(split(df, cumsum(is.na(df$l1))), na.omit)
lapply(lst, function(d) 
  polygon(x = c(d$time, rev(d$time)), y = c(d$l1, rev(d$l2)), col = rgb(1,0,0,0.5)))

df我目前正在考虑一个非常棘手的解决方法:找到没有NAs的连续x集,并对每个完整的x集进行多边形“着色”。但在我深入讨论这个问题之前,有没有更简单的方法?请提供一个最小的、自包含的示例。检查这些链接,了解一般的想法,以及如何在R:、和中执行此操作。
polygon(x = c(vals_time, vals_time[10:1]),
        y = c(vals_line1, vals_line2[10:1]),
        col = rgb(1, 0, 0, 0.5))
df <- data.frame(time = vals_time, 
                 l1 = vals_line1, 
                 l2 = vals_line2)
plot(x = df$time, y = df$l1, type = "l", ylim = c(0, 11))
lines(x = df$time, y = df$l2)
lst <- lapply(split(df, cumsum(is.na(df$l1))), na.omit)
lapply(lst, function(d) 
  polygon(x = c(d$time, rev(d$time)), y = c(d$l1, rev(d$l2)), col = rgb(1,0,0,0.5)))