Мой вопрос связан с этой проблемой:
Создать линейный график, используя категориальные данные и не соединяя линии
Вот пример из связанного вопроса:
library(ggplot2)
df <- data.frame(x = c('a', 'b', 'c', 'd', 'e'),
y = c('a', 'a', NA, 'a', 'a'))
ggplot(df, aes(x = x, y = y, group = y)) +
geom_point() +
geom_line()
Рисуется непрерывная линия, хотя df$y
содержит NA
:
is.na(df$y)
[1] FALSE FALSE TRUE FALSE FALSE
Я запутался, потому что в справке для geom_line()
под Отсутствует значение обрабатывая , он говорит, что:
geom_path (), geom_line () и geom_step обрабатывают NA следующим образом:
Если NA появляется в середине строки, он ломает черту. Предупреждение не отображается, независимо от того, является ли na.rm ИСТИНА или ЛОЖЬ.
Может кто-нибудь объяснить мне, почему это не работает для категориальных данных в примере выше?
Из-за попыток, я думаю, это как-то связано с частью group
, но я действительно не понимаю, как это работает. Большое спасибо за вашу помощь!
Редактировать:
В отличие от того, что я предположил, на самом деле не имеет значения, являются ли данные категориальными или числовыми. См .:
ggplot(df, aes(x = as.numeric(as.factor(x)), y = as.numeric(as.factor(y)), group = as.numeric(as.factor(y)))) +
geom_point() +
geom_line()
Это только удаляет NA
точку , но продолжает рисовать линию на разрыве. Действительно, критической точкой является группировка, которая не требуется для числовых данных:
ggplot(df, aes(x = as.numeric(as.factor(x)), y = as.numeric(as.factor(y)))) +
geom_point() +
geom_line()
См. Комментарии ниже.