包括带编织的交互式3D图形

时间:2013-02-14 16:16:58

标签: html r knitr rgl r-markdown

使用knitr可以在rgl源文件的html文档中嵌入Rmarkdown 3D图形:

```{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))
```

但是html文档中的3D图形不是交互式的。是否有可能获得交互式3D图形? writeWebGL()包的rgl功能会创建一个带有交互式3D图形的html文件,有没有办法直接将这个HTML代码包含在Rmarkdown中?否则如何手动包含这个HTML代码?

更新24/06/2013

这是一个今天不起作用的示例(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()
    ```
    

    我使用不同版本的rglknitr包在两种情况下使用RStudio“编织”按钮编织此文件(但这肯定是由于rgl包,因为问题出现在writeWebGL函数的输出中:

  • R-2.15.2的旧版本:source filehtml rendering。和html file generated by writeWebGL with rgl_0.93.928。对我而言,它运作良好(3D图中只有4个红点......在我的脏屏幕上不容易看到,但我看到了它们)。

  • R-2.15.3的最新版本:source filehtml rendering。和html file generated by writeWebGL with rgl_0.93.935。对我来说它不起作用:3D图不可见。我使用的是Windows 7,它不适用于Chrome,也不适用于Firefox。

编辑28/06/2013

24/06更新引发的问题与knitr无关。我在这篇文章中重述了它:WebGL rendering with rgl 0.93.935 R package

1 个答案:

答案 0 :(得分:48)

added 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))
```

请参阅an example here(和Rmd source)。