Используя knitr
, можно вставить 3D-графику rgl
в html-документ из исходного файла Rmarkdown
:
```{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-графику? Функция writeWebGL()
пакета rgl
создает html файл с интерактивной 3D-графикой, есть ли способ напрямую связать этот HTML-код с Rmarkdown? В противном случае, как включить этот html-код вручную?
Обновление 24/06/2013
Вот пример, который сегодня не работает (3D-графика не отображается в 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() ```
Я связал этот файл с кнопкой RStudio "knit" в двух ситуациях, используя разные версии пакетов
rgl
иknitr
(но это, безусловно, связано с пакетомrgl
, потому что проблема возникает с выходом функцияwriteWebGL
): -
старые версии с R-2.15.2: исходный файл и рендеринг html. И html файл, сгенерированный
writeWebGL
с rgl_0.93.928. Для меня это работает хорошо (на 3D-графике всего 4 красных точки... нелегко увидеть на моем грязном экране, но я их вижу). -
последние версии с R-2.15.3: исходный файл и рендеринг html. И html файл, сгенерированный
writeWebGL
с rgl_0.93.935. Для меня это не работает: 3D-график не виден. Я использую Windows 7, и он не работает с Chrome, ни с Firefox.
Изменить 28/06/2013
Проблема, связанная с обновлением 24/06, не имеет ничего общего с knitr
. Я перефразировал его в этом сообщении: рендеринг WebGL с пакетом rgl 0.93.935 R