Использование gganimate с geom_point и geom_line - PullRequest
2 голосов
/ 02 февраля 2020

работа с данными nfl здесь .. пробуем gganimate в первый раз ... пытаемся использовать geom_point и geom_line, но geom_line не появится ..

фрейм данных здесь ..

week = c(1,2,3,4,5,6,8,9,10,11,12,13,14,15,16,17)
plays= c(9,10,5,3,4,4,3,5,6,5,11,12,6,11,7,3)
mean_epa= c(.67, .27, -.5, -1.09, -.3, .68, -.72, -.32, 1.03, 1.05, .56, .17, -.61, -.05, -.14, 1.5)
CLEdrive1b <- data.frame(week,plays,mean_epa)

в переменной недели, 7 отсутствует (потому что у Браунов не было игровой недели 7) ... не уверен, вызывает ли это проблемы?

моя первая попытка ниже

p <- ggplot(CLEdrive1b, aes(x=as.factor(week),y=mean_epa)) +
  theme_minimal() +
  geom_point(aes(group = seq_along(week)), color = "orange", size = 4) +
  geom_line(alpha = 0.5)+
  transition_reveal(week)+
  geom_text(aes(label = mean_epa))+
  xlab("Week") +
  ylab("EPA/Play") +
  labs(title="Browns Opening Drives",
       subtitle = "EPA/Drive by Week",
       caption="Data from nflscrapR")+
  theme(axis.title = element_text(size = 10),
        axis.text = element_text(size = 9),
        plot.title = element_text(size = 15),
        plot.subtitle = element_text(size = 10),
        plot.caption = element_text(size = 8))

animate(p)

result for above code

альтернативный метод, который я пробовал ..

pi <- ggplot(CLEdrive1b, aes(week,y=mean_epa)) +
  theme_minimal() +
  geom_point(aes(group = seq_along(week)), color = "orange", size = 4) +
  geom_line(alpha = 0.5)+
  transition_reveal(week)+
  geom_text(aes(label = mean_epa))+
  xlab("Week") +
  ylab("EPA/Play") +
  labs(title="Browns Opening Drives",
       subtitle = "EPA/Drive by Week",
       caption="Data from nflscrapR")+
  theme(axis.title = element_text(size = 10),
        axis.text = element_text(size = 9),
        plot.title = element_text(size = 15),
        plot.subtitle = element_text(size = 10),
        plot.caption = element_text(size = 8))

animate(pi)

result for alternative method

удален как .фактор из переменной x (неделя) .. и появится geom_line! но ось X теряет метки, которые я ищу, и geom_text перестает работать так, как было выше ..

спасибо, что потратили время на помощь ...

1 Ответ

1 голос
/ 03 февраля 2020

Проблема в том, что при преобразовании его в факторы ggplot больше не «знает», как группировать переменную недели, и больше не связывает наблюдения. Добавление aes(group = 1) к вашему geom_line - это все, что вам нужно.

library(gganimate)
#> Loading required package: ggplot2
library(ggplot2)
week = c(1,2,3,4,5,6,8,9,10,11,12,13,14,15,16,17)
plays= c(9,10,5,3,4,4,3,5,6,5,11,12,6,11,7,3)
mean_epa= c(.67, .27, -.5, -1.09, -.3, .68, -.72, -.32, 1.03, 1.05, .56, .17, -.61, -.05, -.14, 1.5)
CLEdrive1b <- data.frame(week,plays,mean_epa)

p <- ggplot(CLEdrive1b, aes(x=as.factor(week),y=mean_epa)) +
  geom_point(aes(group = seq_along(week)), color = "orange", size = 4) +
  geom_line(alpha = 0.5, aes(group = 1))+
  transition_reveal(week)+
  geom_text(aes(label = mean_epa))

animate(p)

Создано в 2020-02-03 пакетом Представить (v0.3.0)

...