我正在尝试使用R中visreg2d
包的visreg
函数创建RGL图,以包含到通过在RMarkdown文件上运行knitr
创建的HTML文档中。
我可以从rgl
包函数plot3d
和spheres3d
获取RGL图,但不能从我的HTML文档中调用visreg2d(..., plot.type = "rgl")
。
以下是一个示例RMarkdown文件,它是根据示例here:
构建的---
output:
html_document:
self_contained: no
---
```{r setup, results='asis'}
library(knitr)
library(rsm)
library(visreg)
knit_hooks$set(webgl = hook_webgl)
cat('<script type="text/javascript">', readLines(system.file('WebGL', 'CanvasMatrix.js', package = 'rgl')), '</script>', sep = '\n')
```
This works fine.
```{r testgl, webgl=TRUE}
x <- sort(rnorm(1000))
y <- rnorm(1000)
z <- rnorm(1000) + atan2(x,y)
plot3d(x, y, z, col=rainbow(1000))
```
This one also works.
```{r testgl2, webgl=TRUE}
open3d()
spheres3d(x, y, z, col=rainbow(1000))
```
```{r, webGL = TRUE}
library(rsm)
swiss2.lm <- lm(Fertility ~ Agriculture*Education, data = swiss)
open3d()
visreg2d(swiss2.lm, "Education", "Agriculture", plot.type = "rgl")
```
对plot3d
和spheres3d
的调用有效,但对visreg2d
的调用无效。也就是说,即使本地我可以看到RGL图,它也不会嵌入我的HTML文档中。任何有关如何使其工作的建议将不胜感激。
答案 0 :(得分:2)
这只是一个错字 - 您输入了webGL = TRUE
而不是webgl=TRUE
。
但是,我会补充一点,当我在我的机器上尝试这个时,我不得不使用nn
选项visreg2d
来降低visreg图的分辨率(否则我遇到了“堆栈空间溢出”错误) 1}}(例如,nn=39
)。