如何在 Rmarkdown 包小插图中嵌入 rgl 快照

How to embed an rgl snapshot in Rmarkdown package vignette

我为我的包裹创建了一个 R 插图。此小插图使用 webGL 嵌入了交互式 rgl 图。

---
title: "title"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{title}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r setup, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```

```r
rgl::plot3d(runif(10), runif(10), runif(10))
```

```{r, echo = FALSE}
rgl::plot3d(runif(10), runif(10), runif(10))
rgl::rglwidget()
```

它工作得很好,但对我的需要来说有点过分了。一个简单的非交互式图片就足够了。 webGL 显示的问题在于它创建了一个大文件 (>1 Mb)。因此,我在 CRAN 上有一个关于目录大小的注释。我不想争论这个注意事项,而是想使用常规图片减小 html 输出的大小。

rgl::plot3d(runif(10), runif(10), runif(10))
rgl::rgl.snapshot()

这显然不行。

您需要使用 knitr 文档中描述的旧 hook_rgl 方法,并在 rgl 中更新。例如,这些块将插入一个 PNG 图:

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
rgl::setupKnitr()
```

```{r rgl=TRUE, dev='png'}
rgl::plot3d(runif(10), runif(10), runif(10))
```