如何使用geom_line连接多个连续丢失的数据值?

问题描述 投票:0回答:1

我有一个与问类似的问题:使用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校正的tree2,但是缺少跨NA的预期行的图形

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)

有什么想法吗?

dataframe ggplot2 na
1个回答
0
投票

geom_line()确实跨许多NA连接。

在您的“ nofix”示例中,它从x = 1连接到x = 5的下一个点。

您的示例中的问题是x = 7之后没有连接点。因为每个x> 7都有y = NA。

尝试在示例中再加上一个值,x = 10 y = 10,然后该行将从x = 7连接到x = 10。

© www.soinside.com 2019 - 2024. All rights reserved.