Нарисуйте линию между точками с группами в ggplot - PullRequest
1 голос
/ 05 ноября 2019

У меня есть временной ряд, в каждой точке которого есть время, значение и группа, в которую он входит. Я пытаюсь построить график со временем по оси x и значением по осям y, при этом линия отображается в другом цвете в зависимости от группы.

Я пытался использовать geom_path и geom_line, но они заканчивают связываниемуказывает на точки внутри групп. Я обнаружил, что когда я использую непрерывную переменную для групп, у меня есть нормальная линия;однако, когда я использую фактор или категориальную переменную, у меня возникает проблема со связью.

Вот воспроизводимый пример, который мне бы хотелось:

df = data.frame(time = c(1,2,3,4,5,6,7,8,9,10), value = c(5,4,9,3,8,2,5,8,7,1), group = c(1,2,2,2,1,1,2,2,2,2))
ggplot(df, aes(time, value, color = group)) + geom_line()

Image of what the graph should look like

А вот воспроизводимый пример, который у меня есть:

df = data.frame(time = c(1,2,3,4,5,6,7,8,9,10), value = c(5,4,9,3,8,2,5,8,7,1), group = c("apple","pear","pear","pear","apple","apple","pear","pear","pear","pear"))
ggplot(df, aes(time, value, color = group)) + geom_line()

Image of what the graph actually looks like

Итак, первый пример работаетхорошо, но 1 / он добавляет несколько строк, чтобы изменить легенду, чтобы иметь нужные метки, 2 / из любопытства, я хотел бы знать, если я что-то пропустил. использовать, чтобы иметь ожидаемое поведение, или это внутреннее ограничение?

1 Ответ

0 голосов
/ 05 ноября 2019

Как указали Ричард Телфорд и Карлес без Фуэнтеса , добавление group = 1 в эстетику ggplot делает работу. Поэтому нормальный код должен быть:

ggplot(df, aes(time, value, color = group, group = 1)) + geom_line()
...