13.5 rgl によるインタラクティブな3次元グラフを埋め込む

rgl パッケージ (Adler and Murdoch 2021) を使うとインタラクティブな3次元グラフを生成できます. WebGL 形式で保存すれば, これらのグラフは(保存後も)インタラクティブのままです. これはフック関数 rgl::hook_webgl() を使えば可能です. 以下の例は rglknitr で 3次元グラフをインタラクティブ性を保ったまま保存できるようにする方法を示しています.

---
title: rgl で3次元グラフを埋め込む
output: html_document
---

**rgl** を保存するフック関数を用意する.

```{r, setup}
library(rgl)
knitr::knit_hooks$set(webgl = hook_webgl)
```

フックを有効にした後で, チャンクオプション `webgl = TRUE`
この3次元グラフが動作するかを確認してください.

```{r, test-rgl, webgl=TRUE}
x <- sort(rnorm(1000))
y <- rnorm(1000)
z <- rnorm(1000) + atan2(x,y)
plot3d(x, y, z, col = rainbow(1000))
```

この例をコンパイルすると図13.3のようなインタラクティブな3次元散布図が得られるはずです. インタラクティブなグラフは出力フォーマットが HTML の時だけ動作することに注意してください.

rgl パッケージから生成した3次元散布図

図 13.3: rgl パッケージから生成した3次元散布図

参考文献

Adler, Daniel, and Duncan Murdoch. 2021. Rgl: 3d Visualization Using OpenGL. https://CRAN.R-project.org/package=rgl.