Подтвердить что ты не робот

Графические линии и групповая эстетика в ggplot2

Этот вопрос следует из более раннего вопроса и его ответов.

Сначала некоторые данные о игрушке:

df = read.table(text = 
"School      Year    Value 
 A           1998    5
 B           1999    10
 C           2000    15
 A           2000    7
 B           2001    15
 C           2002    20", sep = "", header = TRUE)

Первоначальный вопрос задал вопрос о том, как строить линии Value-Year для каждой школы. Ответы более или менее соответствуют p1 и p2 ниже. Но также рассмотрим p3.

library(ggplot2)

(p1 <- ggplot(data = df, aes(x = Year, y = Value, colour = School)) +       
   geom_line() + geom_point())

(p2 <- ggplot(data = df, aes(x = factor(Year), y = Value, colour = School)) +       
  geom_line(aes(group = School)) + geom_point())

(p3 <- ggplot(data = df, aes(x = factor(Year), y = Value, colour = School)) +       
  geom_line() + geom_point())

Оба p1 и p2 выполняют задание. Разница между p1 и p2 заключается в том, что p1 рассматривает Year как числовой, тогда как p2 рассматривает Year как фактор. Кроме того, p2 содержит эстетику group в geom_line. Но когда эстетика group отбрасывается, как в p3, линии не рисуются.

Вопрос: почему эстетика group необходима, когда переменная оси x является фактором, но эстетика group не нужна, когда переменная оси x является числовой?

enter image description here

4b9b3361

Ответ 1

В словах сам Хэдли:

Важное значение [для линейного графика с коэффициентом на горизонтальной оси] - это вручную указать группировку. От default ggplot2 использует комбинацию всех категориальных переменных в сюжет для группировки геометров - это не работает для этого сюжета, потому что вы получить отдельную линию для каждой точки. Вручную укажите группу = 1 указывает, что вы хотите, чтобы одна линия соединяла все точки.

Фактически вы можете группировать точки по-разному как показано здесь koshke