使用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代码?
这是一个今天不起作用的示例(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()
```
我使用不同版本的rgl
和knitr
包在两种情况下使用RStudio“编织”按钮编织此文件(但这肯定是由于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。
24/06更新引发的问题与knitr
无关。我在这篇文章中重述了它:WebGL rendering with rgl 0.93.935 R package
答案 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)。