Gganimateループの間に一時停止を追加することは可能ですか? interval
でフレーム間の間隔を設定できることは知っていますが、最初のフレームにループバックする前に最後のフレームで一時停止する方法はありますか?
最終フレームの複数のコピーをデータに挿入するための最良の方法はありますか?
render
のanimate
オプションを調整することで可能になります。 READMEの例を使用して、
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))
これにより、ループ間に一時停止を追加するのではなく、アニメーションがループするのを防ぐことに注意してください。アランの回答で示唆されているように、ループの間に一時停止を追加するには、このリンクが役立つはずです。
実用的なソリューションが別の投稿で提供されています:
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をより大きな数値に変更する必要がある場合があります。