在给定这两个约束的情况下,是否有可能使用Base R对两个lines
之间的区域进行着色:
ggplot2
,因为我的应用的其他部分无效(Shiny
clickId
限制;更具体地说,使用ggplot2
&#39 ; s clickId
没有给出数据的真实x和y值。polygon
,因为我的数据中存在NA
,这使得"阴影"由polygon
过早关闭创建。这是一个SSCCE(不包括Shiny
组件):
#my sample data
vals_time <- c(1:10)
vals_line1 <- c(8, 9, NA, NA, 7, 8, 7, NA, 9, 4)
vals_line2 <- c(4, 5, NA, NA, 6, 10, 8, NA, 5, 2)
#create line graphs without the shade
plot(x = vals_time, y = vals_line1, type = "l", ylim = c(0,11))
lines(x= vals_time, y = vals_line2)
以下是我使用polygon
功能的方式:
polygon(x = c(vals_time, vals_time[10:1]),
y = c(vals_line1, vals_line2[10:1]),
col = rgb(1, 0, 0, 0.5))
答案 0 :(得分:2)
您可以按na值拆分数据,然后在拆分数据上使用polygon
。我首先要创建一个data.frame
。然后,您可split
data.frame
NA
上na.omit
并使用NA
省略lapply
个值。最后使用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)))
绘制数据。
{{1}}