包括一个与knitr交互的3Dgraphics
使用knitr
,可以在Rmarkdown
源文件的html文档中embedded一个rgl
3Dgraphics:
```{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)) ```
但是3Dgraphics在html文档中不是交互式的。 是否有可能获得交互式3Dgraphics? rgl
包的writeWebGL()
函数创build一个交互式3Dgraphics的html文件,有没有办法直接包含这个html代码与Rmarkdown? 否则,如何手动包含这个HTML代码?
2013年6月24日更新
以下是一个今天无法使用的示例(3Dgraphics不会显示在Chrome中):
-
Rmd源文件 ,这是非常基本的:
```{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() ```
在使用不同版本的
rgl
和knitr
包的两种情况下,我用RStudio“knit”buttonknitr
这个文件(但这肯定是由于rgl
包,因为writeWebGL
函数的输出发生问题): -
旧版本R-2.15.2: 源文件和html渲染 。 并通过
writeWebGL
与rgl_0.93.928生成html文件 。 对我来说,它运作良好(3D图中只有4个红点…不容易看到我的肮脏的屏幕,但我看到他们)。 -
最新版本与R-2.15.3: 源文件和HTML渲染 。 和由
writeWebGL
与rgl_0.93.935生成的html文件 。 对我来说这是行不通的:三维图是不可见的。 我使用的是Windows 7,它不适用于Chrome,也不适用于Firefox。
编辑28/06/2013
24/06更新提出的问题与knitr
没有任何关系。 我已经在这篇文章中对它进行了修改: 使用rgl 0.93.935 R包进行WebGL渲染
我在knitr中 添加了一个新的钩子hook_webgl()
,后来被并入到了rgl中 。 这里是一个例子:
```{r setup} library(knitr) library(rgl) knit_hooks$set(webgl = hook_webgl) ``` ```{r testgl, webgl=TRUE} x <- sort(rnorm(1000)) y <- rnorm(1000) z <- rnorm(1000) + atan2(x,y) plot3d(x, y, z, col=rainbow(1000)) ```
看到一个例子 (和Rmd源 )。