【发布时间】:2020-01-25 09:16:22
【问题描述】:
我有一个与 Q 类似的问题:使用 geom_line 连接缺失值,但发现提供的答案仅在只有一个缺失值时才连接线。如果有 2+ 个连续缺失值,则提供的解决方案不适用。
我需要将随着时间的推移对单个树木所做的多个观察结果联系起来。有时会丢失测量值,导致我的 df 中缺少值,有时会连续一年以上丢失一棵树,从而有多个连续的 NA。
当只有一个连续的 NA 时,使用带有此规范的 geom_line 可以连接缺失值:
geom_line(data = df[!is.na(df$y),])
当有多个连续的 NA(即错过 2 个测量值)时,geom_line 将不会绘制丢失的数据。将 !is.na 应用于整个 df 并不能解决问题,使用 geom_path 也不能。
这是生成复制问题的 df 的代码:
x <- c(1,2,3,4,5,6,7,8,9)
tr1 <- c(20,25,18,16,22,12,NA,15,45)
tr2 <- c(12,NA,NA,NA,30,48,30,NA,NA)
df <- data.frame(x, tr1,tr2)
以下代码可用于绘制 a) 缺少 NA 的 tree1,b) 带有 NA 桥接的 tree1,b) 代码中带有 geom_line 校正但缺少跨 NA 的预期线的 tree2
tree1 <- ggplot(df, aes(x, tr1)) + geom_point() +
geom_line()
tree1.fix <- ggplot(df, aes(x, tr1)) + geom_point() +
geom_line(data = df[!is.na(df$tr1),])
nofix <- ggplot(df, aes(x, tr2)) + geom_point() +
geom_line(data = df[!is.na(df$tr2),])
grid.arrange(tree1, tree1.fix, nofix, ncol = 3)
有什么想法吗?
【问题讨论】: