使用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"按钮在两种情况下编织了这个文件,使用了rglknitr包的不同版本(但这肯定是由于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.

2013年6月28日编辑

24/06更新所引发的问题与knitr无关.我在这篇文章中重新措辞:WebGL rendering with rgl 0.93.935 R package

推荐答案

我在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))
```

R相关问答推荐

基于shiny 应用程序中的日期范围子集xts索引

使用R中的Shapetime裁剪格栅文件

获取一个数据库框架的摘要,该数据库框架将包含一列数据库框架,

如何将旋转后的NetCDF转换回正常的纬度/经度网格,并使用R?

在R中使用download. file().奇怪的URL?

一小时满足条件的日期的 Select

如何使用ggplot对堆叠条形图进行嵌套排序?

如何将R中数据帧中的任何Nas替换为最后4个值

使用带有OR条件的grepl过滤字符串

以相同的方式对每个表进行排序

R中边际效应包中Logistic回归的交互作用风险比

合并后返回列表的数据帧列表

如何删除R中除数字元素以外的所有元素

对R中的列表列执行ROW Mean操作

替换在以前工作的代码中有x行&q;错误(geom_sf/gganimate/dow_mark)

如何将字符类对象中的数据转换为R中的字符串

在R中添加要打印的垂直线

R:水平旋转图

R data.设置函数&;连接中的列值而不使用for循环的表方法?

如何在类应用函数中访问函数本身