2014-11-01 16 views
2

我试图在R中使用visreg软件包的visreg2d函数创建一个RGL图,以包含在通过在RMarkdown文件上运行knitr创建的HTML文档中。R:knitr + RGL:与visreg的visreg2d函数有关的问题

我能从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文档中。任何意见如何得到这个工作将不胜感激。

回答

2

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

不过,我要补充的是,当我想这在我的机器上,我不得不降低visreg情节的分辨率使用nn选项visreg2d(例如,nn=39(否则我碰到了“堆栈空间溢出”错误) )。