2016-07-29 2 views

ответ

2

Один из способов сделать это - использовать mfrow3d(), чтобы поместить несколько «подсечек» в одну «сцену», а затем использовать команду rglwidget(), чтобы показать сцену в вашем html. См. Дополнительную информацию here. Ниже сильно модифицированная версия сценария от Yihui's answer:

--- 
output: html_document 
--- 

You will need to install the rglwidget library if you have not already. 
```{r setup} 
library(knitr) 
library(rgl) 
library(rglwidget) 
``` 

Using mfrow3d() I create a scene with 5 subscenes, 
so each of the 5 plots will appear in a single scene. 
Each will still be independently interactive (can zoom in on one at a time, e.g.). 

```{r testgl} 
x <- sort(rnorm(1000)) 
y <- rnorm(1000) 
z <- rnorm(1000) + atan2(x,y) 

mfrow3d(nr = 5, nc = 1) 
cols <- c("red", "orange", "green", "blue", "purple") 
for(i in 1:5){ 
    plot3d(x, y, z, col = cols[i]) 
} 
rglwidget(height = 4000, width = 1000) 
``` 
+0

Большое спасибо, он отлично работает. – Annie

2

Другим решением является включение нескольких rglwidget() значений. Вы должны поместить их всех в призыв к htmltools::tagList(), чтобы это работало. (Вам не понадобится пакет rglwidget, если вы используете версию разработки rgl от https://r-forge.r-project.org/R/?group_id=234). Изменение примера Винса,

--- 
output: html_document 
--- 

```{r setup} 
library(rgl) 
library(rglwidget) 
``` 

```{r testgl} 
x <- sort(rnorm(1000)) 
y <- rnorm(1000) 
z <- rnorm(1000) + atan2(x,y) 

cols <- c("red", "orange", "green", "blue", "purple") 
result <- list() 
for(i in 1:5){ 
    plot3d(x, y, z, col = cols[i]) 
    result[[i]] <- rglwidget() 
} 
htmltools::tagList(result) 
``` 
Смежные вопросы