Как вставить снимок rgl в виньетку пакета Rmarkdown
Я создал виньетку R. для моей посылки. Эта виньетка вставляет интерактивную фигуру rgl с webGL.
---
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 Мб). Таким образом, у меня есть ПРИМЕЧАНИЕ на CRAN о размере каталога. Вместо того, чтобы спорить об этом ПРИМЕЧАНИЕ, я хотел бы уменьшить размер вывода html, используя обычную картинку.
rgl::plot3d(runif(10), runif(10), runif(10))
rgl::rgl.snapshot()
Это, очевидно, не работает.
1 ответ
Решение
Вам нужно использовать старый hook_rgl
метод, описанный в knitr
документы и обновляются в 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))
```