Как вставить снимок rgl в виньетку пакета Rmarkdown - PullRequest
0 голосов
/ 22 декабря 2018

Я создал виньетку 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 Ответ

0 голосов
/ 22 декабря 2018

Вам необходимо использовать старый метод 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))
```
...