У меня проблема, аналогичная 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) tree1 с отсутствующим NA, b) tree1 с мостовым NA, b) tree2 с исправлением geom_line в коде, но с отсутствующей ожидаемой линией между 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)
Есть идеи?