17

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

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

4

3 回答 3

12

在最新版本的gganimate中,该animate()函数有一个end_pause选项。所以你可以简单地做

animate(p, end_pause = 30)

例如,在再次循环之前暂停 30 帧。

于 2020-01-21T02:35:23.023 回答
10

可以通过调整中的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 的回答中所建议的那样:

有什么方法可以在 gganimate 中使用 transition_reveal 在特定帧/时间点暂停?

于 2018-09-14T20:47:45.110 回答
0

另一个帖子中提供了一个可行的解决方案:

有什么方法可以在 gganimate 中使用 transition_reveal 在特定帧/时间点暂停?

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 更改为更高的数字才能看到暂停。

于 2018-11-02T15:51:01.810 回答