【问题标题】:Using gganimate with geom_point and geom_line将 gganimate 与 geom_point 和 geom_line 一起使用
【发布时间】:2020-02-03 16:54:38
【问题描述】:

在这里使用 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)

在 week 变量中,缺少 7(因为 browns 没有第 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)

我尝试过的替代方法..

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)

从 x 变量(周)中删除了 as.factor.. 并且 geom_line 出现了!但是 x 轴丢失了我正在寻找的标签,并且 geom_text 停止执行上面的操作..

感谢您花时间提供帮助...

【问题讨论】:

    标签: r ggplot2 gganimate


    【解决方案1】:

    问题在于,当将其转换为因子时,ggplot 不再“知道”如何对 week 变量进行分组,也不再连接观察结果。只需将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)
    

    reprex package (v0.3.0) 于 2020 年 2 月 3 日创建

    【讨论】:

      猜你喜欢
      • 2020-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 2019-08-17
      相关资源
      最近更新 更多