2016-07-29 25 views

Antwort

2

Eine Möglichkeit ist es, mfrow3d() zu verwenden, um mehrere "subscenes" in einer einzigen "Szene" zu setzen, dann verwenden Sie den rglwidget() Befehl, um die Szene in Ihrem HTML anzuzeigen. Weitere Informationen finden Sie unter here. Unten ist eine stark modifizierte Version des Skripts von 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

Vielen Dank, es funktioniert perfekt. – Annie

2

Eine andere Lösung ist es, mehrere rglwidget() Werte enthalten. Sie müssen sie alle in einen Anruf an htmltools::tagList() setzen, damit dies funktioniert. (Sie benötigen das rglwidget-Paket nicht, wenn Sie die Entwicklungsversion von rgl von https://r-forge.r-project.org/R/?group_id=234 verwenden). Ändern Vince Beispiel,

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