是否可以在 gganimate 循环之间添加暂停?我知道我们可以用 设置帧之间的间隔interval
,但是有没有办法在循环回第一帧之前暂停最后一帧?
将最终帧的多个副本插入数据的最佳方法是什么?
是否可以在 gganimate 循环之间添加暂停?我知道我们可以用 设置帧之间的间隔interval
,但是有没有办法在循环回第一帧之前暂停最后一帧?
将最终帧的多个副本插入数据的最佳方法是什么?
在最新版本的gganimate中,该animate()
函数有一个end_pause
选项。所以你可以简单地做
animate(p, end_pause = 30)
例如,在再次循环之前暂停 30 帧。
可以通过调整中的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 在特定帧/时间点暂停?
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 更改为更高的数字才能看到暂停。