使用knitr
可以将rgl
3D图形嵌入Rmarkdown
源文件的html文档中:
```{r setup}
library(rgl)
knit_hooks$set(rgl = hook_rgl)
x <- sort(rnorm(1000))
y <- rnorm(1000)
z <- rnorm(1000) + atan2(x,y)
```
```{r, rgl=TRUE}
plot3d(x, y, z, col=rainbow(1000))
```
但是3D图形在html文档中不是交互式的.有可能获得交互式3D图形吗?rgl
软件包的writeWebGL()
函数创建了一个带有交互式3D图形的html文件,有没有办法在Rmarkdown中直接包含这个html代码?否则,如何手动包含此html代码?
更新日期:2013年6月24日
下面是一个今天不起作用的例子(3D图形不会出现在Chrome中):
-
Rmd source file,这是非常基本的:
```{r setup} library(rgl) knit_hooks$set(webgl = hook_webgl) ``` ```{r, webgl=TRUE} M <- rbind( c(0,0,0), c(-1,4,0), c(4,9,0), c(6,3,0) ) points3d(M,col='red') ``` ```{r} sessionInfo() ```
我用RStudio"knit"按钮在两种情况下编织了这个文件,使用了
rgl
和knitr
包的不同版本(但这肯定是由于rgl
包造成的,因为writeWebGL
函数的输出出现了问题): R-2.15.2的旧版本:source file和html rendering.还有html file generated by
writeWebGL
with rgl_0.93.928.对我来说效果很好(3D图中只有4个红色点……在我的脏屏幕上不容易看到,但我看到了它们).R-2.15.3的最新版本:source file和html rendering.还有html file generated by
writeWebGL
with rgl_0.93.935.对我来说,它不起作用:3D绘图不可见.我使用的是Windows 7,它不适用于Chrome,也不适用于Firefox.
2013年6月28日编辑
24/06更新所引发的问题与knitr
无关.我在这篇文章中重新措辞:WebGL rendering with rgl 0.93.935 R package