2016-09-01 2 views
4

Ich versuche, zwei 3D-Punktdiagramme zu erhalten, die mit dem rgl-Paket nebeneinander in einem R-Markdown-Dokument gezeichnet wurden. Zum Beispiel:Seite-an-Seite rgl-Plots mit R Markdown

mfrow3d(nr = 1, nc = 2, sharedMouse = TRUE) 
plot3d(mtcars[, 1:3], type = "s") 
plot3d(mtcars[, 4:6], type = "s") 
rglwidget() 

Das funktioniert perfekt, wenn sie direkt in der Konsole laufen, aber wenn sie auf ein HTML-Dokument mit R Markdown stricken, so scheint es, als ob nur die zweite Handlung gemacht wird.

Ich habe versucht, knit_hooks$set(webgl = hook_webgl) und setzen Sie die Chunk-Option webgl = TRUE, aber das hat auch nicht geholfen.

Irgendwelche Vorschläge würden geschätzt.

Dies ist meine Ausgabe von sessionInfo():

R version 3.3.1 (2016-06-21) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 
Running under: Windows >= 8 x64 (build 9200) 

locale: 
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C       
[5] LC_TIME=English_United States.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] rgl_0.96.0   tidyr_0.6.0   dplyr_0.5.0   smacof_1.8-13  
[5] emojifont_0.3.3  gridExtra_2.2.1  knitr_1.14   MASS_7.3-45   
[9] shinydashboard_0.5.1 shiny_0.13.2   RColorBrewer_1.1-2 ggplot2_2.1.0  

loaded via a namespace (and not attached): 
[1] gtools_3.5.0  splines_3.3.1  lattice_0.20-33  colorspace_1.2-6 
[5] htmltools_0.3.5  yaml_2.1.13   base64enc_0.1-3  chron_2.3-47  
[9] survival_2.39-4  DBI_0.5    foreign_0.8-66  plyr_1.8.4   
[13] stringr_1.1.0  munsell_0.4.3  gtable_0.2.0  htmlwidgets_0.7  
[17] evaluate_0.9  latticeExtra_0.6-28 httpuv_1.3.3  proto_0.3-10  
[21] Rcpp_0.12.6   acepack_1.3-3.3  xtable_1.8-2  polynom_1.3-8  
[25] scales_0.4.0  formatR_1.4   showtext_0.4-4  gdata_2.17.0  
[29] jsonlite_1.0  Hmisc_3.17-4  sysfonts_0.5  mime_0.5   
[33] weights_0.85  digest_0.6.10  stringi_1.1.1  showtextdb_1.0  
[37] grid_3.3.1   tools_3.3.1   magrittr_1.5  tibble_1.2   
[41] Formula_1.2-1  mice_2.25   cluster_2.0.4  Matrix_1.2-6  
[45] rsconnect_0.4.3  data.table_1.9.6 nnls_1.4   assertthat_0.1  
[49] rmarkdown_1.0.9013 R6_2.1.3   rpart_4.1-10  nnet_7.3-12 
+0

Es ist ein Tippfehler in der ersten Linie - es sollte sein : mfrow3d (nr = 1, nc = 2, sharedMouse = TRUE) –

+0

Ich stehe vor einem ähnlichen Problem, wenn ich versuche, einige Diagramme in einer Reihe zu zeichnen und nur die letzte im HTML sichtbar ist (obwohl nicht nebeneinander) . – RgrNormand

Antwort

4

Das war ein Fehler in der Umwandlung der Zeichen-Box Dekoration auf Javascript-Code. Die Grenzen von der ersten Handlung zur zweiten übertragen. Da sie aus nicht zusammenhängenden Mengen berechnet wurden, entstanden seltsame Boxen. Der Bug ist jetzt in Version 0.96.1516 behoben, momentan nur bei R-Schmiede.

Übrigens, mit dem aktuellen rgl brauchen Sie nicht hook_webgl oder library(rglwidgets). Verwenden Sie einfach library(rgl) und rufen Sie rglwidget(), wenn Sie ein Diagramm einfügen möchten. (Es gibt eine Möglichkeit, Plots ohne den Aufruf rglwidget() automatisch einzufügen, aber ich empfehle es nicht.)

So Ihr Dokument könnte wie folgt aussehen:

```{r echo=TRUE} 
library(rgl) 
mfrow3d(nr = 1, nc = 2, sharedMouse = TRUE) 
plot3d(mtcars[, 1:3], type = "s",) 
plot3d(mtcars[, 4:6], type = "s") 
rglwidget() 
``` 

Dieses Bild unten in rgl 0.96.1516 produziert:

enter image description here

+1

Danke, dass du dir das angeschaut und das Problem behoben hast, aber es scheint auch etwas anderes im Spiel zu sein, da ich nur 1 Handlung (die rechte) nach der Installation von 'rgl' 0.96.1516 –

+0

bekommen habe. und fügte 'sessionInfo()' auch hinzu. –

+0

Was ist das letzte Komma in der ersten 'plot3d' Anweisung (nach' type = "s" ')? –

1

Es mindestens eine zu sein scheint, und mehr wie zwei Bugs im Spiel hier. Ändern Sie den Code ein wenig, dieses:

```{r echo=T} 
library(rgl) 
library(rglwidget) 
library(knitr) 
knit_hooks$set(webgl = hook_webgl) 

mfrow3d(nr = 2, nc = 2, sharedMouse = T) 
plot3d(mtcars[, 1:3], type = "s",) 
plot3d(mtcars[, 4:6], type = "s") 
plot3d(mtcars[, 1:3], type = "s") 
plot3d(mtcars[, 4:6], type = "s") 
rglwidget() 
``` 

erzeugt dies in einem kurz sichtbar Gerätefenster:

enter image description here

aber in der R-Studio Vorschaufenster:

enter image description here

Und dies in der HTML-Datei in den Chrome-Browser geladen:

enter image description here

So wird nur die erste Werk, und Abschlag scheint es zu brechen.

Ich würde sagen, Sie sollten wahrscheinlich vermeiden, mehrere rgl Plots in Markdown zu komponieren, bis diese (diese) Fehler behoben werden. Könnte schwierig sein, da es scheint, etwas seltsame Interaktion zwischen den verschiedenen Grafikgeräten und der Bibliothek zu sein.

aktualisiert

Sieht aus wie D (?) Das Problem behob pro seiner Antwort, aber es scheint zu einem anderen Thema im Spiel zu sein. Veröffentlichen Sie dies als Information.

enter image description here

+1

Sieht aus wie ein Fehler im bbox-Code. Wenn Sie diese Plots mit "axes = FALSE" zeichnen und mit manuellen Achsen mit box3d() und axis3d() folgen, sind sie grundsätzlich in Ordnung. – user2554330

+0

Seltsam. Ich bin auf einem Mac, aber die meisten Paketversionen sehen gleich aus. Können Sie die .html-Datei für mich irgendwo verfügbar machen? – user2554330

+0

Ich kann das nicht reproduzieren. Sieht es sonst noch jemand? – user2554330