Ich zeichne eine 3D-Grafik mit Plot3D {rgl} in einer Schleife. knitr rgl hooks funktioniert gut für einzelne 3D-Grafik, aber wenn es in einer Schleife verwendet wird, enthält Markdown-Datei keine 3D-Grafiken. Irgendeine Hilfe?Wie mehrere Plot3D in Markdown (Knitr) unter einer Schleife enthalten
1
A
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)
```
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)
```
Vielen Dank, es funktioniert perfekt. – Annie