在gganimate循环之间暂停

问题描述 投票:10回答:2

是否可以在gganimate循环之间添加暂停?我知道我们可以用interval设置帧之间的间隔,但有没有办法在循环回到第一帧之前暂停最后一帧?

是将最终帧的多个副本插入数据的最佳方法吗?

r ggplot2 visualization gganimate
2个回答
5
投票

可以通过调整render中的animate选项来实现。使用自述文件中的示例,

p <- ggplot(airquality, aes(Day, Temp)) + 
  geom_line(size = 2, colour = 'steelblue') + 
  transition_states(Month, 4, 1) + 
  shadow_mark(size = 1, colour = 'grey')
animate(p, renderer = gifski_renderer(loop = F))

请注意,这可以防止动画循环,而不是在循环之间添加暂停。要在循环之间添加暂停,此链接应该有所帮助,如Alan的回答所示:

Any way to pause at specific frames/time points with transition_reveal in gganimate?


0
投票

另一个帖子提供了一个工作解决方案:

Any way to pause at specific frames/time points with transition_reveal in gganimate?

airq_pause <- airq %>%
  mutate(show_time = case_when(Day %in% c(10,20,31) ~ 10,
                               TRUE                 ~ 1)) %>%
  # uncount is a tidyr function which copies each line 'n' times
  uncount(show_time) %>%
  group_by(Month) %>%
  mutate(reveal_time = row_number()) %>%
  ungroup()

只需编辑以下代码行:

mutate(show_time = case_when(Day %in% c(10,20,31) ~ 10,
                                 TRUE             ~ 1),

对于以下方面的事情:

mutate(show_time = case_when(Day %in% max(Day) ~ 10,
                                 TRUE          ~ 1),

并相应地调整/删除group_by()调用。可能需要将~10更改为更高的数字才能看到暂停。

© www.soinside.com 2019 - 2024. All rights reserved.