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 = TRUEhook_rgl 函数一起使用,这是在 knitr 中处理 rgl 的较旧方法之一。它总是有问题,因此最近的版本推荐了其他方法。

使用 rgl::setupKnitr(autoprint = TRUE) 是最简单的方法。它近似于基本绘图的行为:不会出现对绘图的微小更新,只显示最终版本。如果您不想这样,那么您可以将其保留为 autoprint = FALSE,并明确包含 rglwidget() 调用以显示情节。

auto-printing 并不完美,例如一些产生 rgl 图的包不会以触发它的方式产生输出。您可以在 ?rgl::setupKnitr 帮助主题中阅读更多相关信息。