rmarkdown::render 不会渲染 rgl::plot3d 图形(但针织按钮会渲染!)
rmarkdown::render does not render an rgl::plot3d figure (but Knit button does!)
考虑以下示例:
---
title: "Untitled"
output:
pdf_document: default
---
```{r, setup}
Sys.setenv(CHROMOTE_CHROME = "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe")
options(rgl.useNULL = TRUE)
rgl::setupKnitr()
```
Plot:
```{r, rgl = TRUE, dev = "png"}
rgl::plot3d(rnorm(10), rnorm(10), rnorm(10))
```
运行 rmarkdown::render("temp.Rmd", output_format = "pdf_document")
生成没有图形的 PDF。更有趣的是,在 RStudio 中点击 Knit 按钮可以生成完美的 PDF! (这本身就很奇怪;我的印象是 Knit 按钮与上面的调用完全相同。)
使用 rgl = TRUE
与 hook_rgl
函数一起使用,这是在 knitr
中处理 rgl
的较旧方法之一。它总是有问题,因此最近的版本推荐了其他方法。
使用 rgl::setupKnitr(autoprint = TRUE)
是最简单的方法。它近似于基本绘图的行为:不会出现对绘图的微小更新,只显示最终版本。如果您不想这样,那么您可以将其保留为 autoprint = FALSE
,并明确包含 rglwidget()
调用以显示情节。
auto-printing 并不完美,例如一些产生 rgl
图的包不会以触发它的方式产生输出。您可以在 ?rgl::setupKnitr
帮助主题中阅读更多相关信息。
考虑以下示例:
---
title: "Untitled"
output:
pdf_document: default
---
```{r, setup}
Sys.setenv(CHROMOTE_CHROME = "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe")
options(rgl.useNULL = TRUE)
rgl::setupKnitr()
```
Plot:
```{r, rgl = TRUE, dev = "png"}
rgl::plot3d(rnorm(10), rnorm(10), rnorm(10))
```
运行 rmarkdown::render("temp.Rmd", output_format = "pdf_document")
生成没有图形的 PDF。更有趣的是,在 RStudio 中点击 Knit 按钮可以生成完美的 PDF! (这本身就很奇怪;我的印象是 Knit 按钮与上面的调用完全相同。)
使用 rgl = TRUE
与 hook_rgl
函数一起使用,这是在 knitr
中处理 rgl
的较旧方法之一。它总是有问题,因此最近的版本推荐了其他方法。
使用 rgl::setupKnitr(autoprint = TRUE)
是最简单的方法。它近似于基本绘图的行为:不会出现对绘图的微小更新,只显示最终版本。如果您不想这样,那么您可以将其保留为 autoprint = FALSE
,并明确包含 rglwidget()
调用以显示情节。
auto-printing 并不完美,例如一些产生 rgl
图的包不会以触发它的方式产生输出。您可以在 ?rgl::setupKnitr
帮助主题中阅读更多相关信息。