R:knitr + RGL:visreg的visreg2d函数问题

时间:2014-11-01 14:20:31

标签: r knitr rgl

我正在尝试使用R中visreg2d包的visreg函数创建RGL图,以包含到通过在RMarkdown文件上运行knitr创建的HTML文档中。

我可以从rgl包函数plot3dspheres3d获取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")
```

plot3dspheres3d的调用有效,但对visreg2d的调用无效。也就是说,即使本地我可以看到RGL图,它也不会嵌入我的HTML文档中。任何有关如何使其工作的建议将不胜感激。

1 个答案:

答案 0 :(得分:2)

这只是一个错字 - 您输入了webGL = TRUE而不是webgl=TRUE

但是,我会补充一点,当我在我的机器上尝试这个时,我不得不使用nn选项visreg2d来降低visreg图的分辨率(否则我遇到了“堆栈空间溢出”错误) 1}}(例如,nn=39)。