ile*_*lex 3 rgl knitr r-markdown
如何将 3D 绘图(rgl)嵌入到通过 knit 创建的 html 中?
\n有几个较旧的帖子正在寻找类似的结果。但是,当我运行我发现的所有示例代码时。rgl-plot don\xc2\xb4t 嵌入到用knitr创建的html中,但在“knitting”时出现在外部窗口中,并在html页面出现时消失。
\n我\xc2\xb4m 寻找的是一种将 3D 绘图集成到生成的 html 中的方法。我不介意它是保持交互还是变成静态。
\n以下示例取自 R Markdown Cookbook: https://bookdown.org/yihui/rmarkdown-cookbook/rgl-3d.html
\ntitle: Embed 3D plots with rgl\noutput: html_document\n---\n\nSet up a hook to save **rgl** plots:\n\n```{r, setup}\nlibrary(rgl)\nknitr::knit_hooks$set(webgl = hook_webgl)\n```\n\nSee if it works for this 3D plot after we enable the hook\nvia the chunk option `webgl = TRUE`:\n\n```{r, test-rgl, webgl=TRUE}\nx <- sort(rnorm(1000))\ny <- rnorm(1000)\nz <- rnorm(1000) + atan2(x,y)\nplot3d(x, y, z, col = rainbow(1000))\n```\nRun Code Online (Sandbox Code Playgroud)\n
您所做的应该可行,但这不是rgl在文档中嵌入图形的最佳方式。
最简单的方法是调用rglwidget()您想要插入当前绘图的位置。您还可以用来抑制绘图时创建的options(rgl.useNULL=TRUE)单独窗口。rgl例如,
---
title: Embed 3D plots with rgl
output: html_document
---
No need for a hook with `rgl` version >= 0.96.0, just call `rglwidget()`.
```{r, setup}
options(rgl.useNULL = TRUE) # Suppress the separate window.
library(rgl)
```
See it work for this 3D plot without the hook:
```{r}
x <- sort(rnorm(1000))
y <- rnorm(1000)
z <- rnorm(1000) + atan2(x,y)
plot3d(x, y, z, col = rainbow(1000))
rglwidget()
```
Run Code Online (Sandbox Code Playgroud)
版本 0.102.21 或更新版本rgl使其变得更加简单: 可以使绘图在与基本图形绘图几乎相同的规则下显示,只需在开始时rgl调用即可。rgl::setupKnitr(autoprint = TRUE)
我说你尝试过的应该有效,而且对我也有效。为什么不适合你呢?很难猜测出了什么问题,但最有可能的情况是您的 Web 浏览器没有启用 WebGL,或者您正在使用某些旧版本的 R 或rgl其中存在错误。针对不良浏览器的一种简单解决方法是切换到静态绘图;您可以通过将代码更改为 来做到这hook = hook_webgl一点hook = hook_rgl。
| 归档时间: |
|
| 查看次数: |
2351 次 |
| 最近记录: |