web-dev-qa-db-ja.com

gganimateループ間で一時停止します

Gganimateループの間に一時停止を追加することは可能ですか? intervalでフレーム間の間隔を設定できることは知っていますが、最初のフレームにループバックする前に最後のフレームで一時停止する方法はありますか?

最終フレームの複数のコピーをデータに挿入するための最良の方法はありますか?

13
willk

renderanimateオプションを調整することで可能になります。 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を使用して特定のフレーム/時点で一時停止する方法はありますか?

5
Hao

実用的なソリューションが別の投稿で提供されています:

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をより大きな数値に変更する必要がある場合があります。

0
Alan Dursun