如何在 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))
```
我为我的包裹创建了一个 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))
```