4.14 複数の R プロットからアニメーションを作成する

1つのコードチャンクで連続したプロットを生成したとき, これらを結合して1つのアニメーションを生成できます. 出力フォーマットが HTML なら, これは簡単です. gifski パッケージ (Ooms 2021a) をインストールし, チャンクオプション animation.hook = "gifski" 設定するだけです. 図4.3 はシンプルな「パックマン」のアニメーションで, これは以下のコードで作成しました.

```{r, animation.hook="gifski"}
for (i in 1:2) {
  pie(c(i %% 2, 6), col = c('red', 'yellow'), labels = NA)
}
```
パックマンのアニメーション

図 4.3: パックマンのアニメーション

アニメーションのフォーマットは GIF で, HTML 出力ではうまく動作しますが, LaTeX は GIF を直接サポートしていません. あなたが本書の PDF または印刷版を読んでいるなら, 図4.3 が2つの動かない画像になっているのはこれが理由です. 本書のオンライン版を読めば, 実際のアニメーションが見られるでしょう.

PDF でもアニメーションを動作させることはできますが, 事前準備が2つ必要です. 第1に, LaTeX パッケージの animate を読み込む必要があります (方法は6.4節参照). 第2に, Acrobat Reader でのみアニメーションを見ることができます. その上で以下の例のように, チャンクオプション fig.show = "animate"animate パッケージ を使いアニメーションを作成できるようにします.

---
title: PDF でのアニメーション
output:
  pdf_document:
    extra_dependencies: animate
---

以下のアニメーションは Acrobat Reader でのみ見ることができます.

```{r, fig.show='animate'}
for (i in 1:2) {
  pie(c(i %% 2, 6), col = c('red', 'yellow'), labels = NA)
}
```

アニメーションのイメージフレーム間の表示間隔はチャンクオプション interval で設定できます. デフォルトでは interval = 1 (つまり1秒) です.

R パッケージ animation (Xie 2021a) には, 統計的計算の方法やアイディアを表現するアニメーションの例がいくつか入っています. gganimate パッケージ (Pedersen and Robinson 2020)ggplot2 (Wickham, Chang, et al. 2021) に基づいた滑らかなアニメーションの作成を可能にします. どちらも R Markdown で動作します.

参考文献

Ooms, Jeroen. 2021a. Gifski: Highest Quality GIF Encoder. https://CRAN.R-project.org/package=gifski.
Pedersen, Thomas Lin, and David Robinson. 2020. Gganimate: A Grammar of Animated Graphics. https://CRAN.R-project.org/package=gganimate.
Wickham, Hadley, Winston Chang, Lionel Henry, Thomas Lin Pedersen, Kohske Takahashi, Claus Wilke, Kara Woo, Hiroaki Yutani, and Dewey Dunnington. 2021. Ggplot2: Create Elegant Data Visualisations Using the Grammar of Graphics. https://CRAN.R-project.org/package=ggplot2.
———. 2021a. Animation: A Gallery of Animations in Statistics and Utilities to Create Animations. https://yihui.org/animation/.