2015-10-05 18 views
9

Ich möchte ggplot2 mit grid.arrange verwenden, um mehrere Plots mit plotly zu generieren. Manche Dinge ähnlich wie diese:Mehrere ggplot2-Plots mit plotly

library(ggplot2) 
library(gridExtra) 
library(plotly) 


g1<-ggplot(mpg, aes(displ, hwy, color=factor(year)))+geom_point() 

g2<-ggplot(mpg, aes(cyl, hwy, color=factor(year)))+geom_point() 

g<-grid.arrange(g1,g2,ncol=2) 

ggplotly(g) 

Aber ich bin immer "Fehler in gg2list (p): Keine Schichten in plot"

Irgendwelche Vorschläge

+0

ich nicht einmal plotly in R 3.1.3 zu installieren, erhalten kann. Welche Version verwendest du? –

+0

Sehen Sie dies: https://plot.ly/r/getting-started/ –

Antwort

8

die subplot Funktion von plotly Verwendung:

subplot(p1, p2, nrows = 2, margin = 0.04, heights = c(0.6, 0.4)) 
3

Ich habe dieses Problem selbst und Ich denke nicht, dass es eine Lösung dafür gibt, wie Sie es beschreiben.

Die im Aufruf von ggplotly enthaltene Funktion gg2list erwartet, dass sie über die Layer eines ggplot-Objekts iterieren kann, um das entsprechende plotly-Objekt zu erstellen. Wenn Sie mit dem Debugger von Rtudio auf die Funktion ggplotly zugreifen, können Sie die verschiedenen Möglichkeiten sehen, wie er versucht, über das empfangene Objekt zu iterieren, um seine Eigenschaften zu extrahieren.

Es weiß nicht, was mit dem von der Funktion arrangeGrob zurückgegebenen Objekt zu tun ist, weil es nicht nur ein einzelnes ggplot-Objekt ist (es ist eine grobe Anordnung usw.).

Das Aufrufen der Klasse() für die fraglichen Objekte veranschaulicht diesen Punkt etwas.

> class(g1) 
[1] "gg"  "ggplot" 

> class(g) 
[1] "arrange" "ggplot" "gTree" "grob" "gDesc" 

Ich denke, um mehrere Plots zu haben Köpfe in der gleichen plotly Objekt nach oben, müssen wir die Facette Optionen in ggplot oder die nativen plotly R Bindungen verwenden. Unglücklicherweise, weil gridExtra sehr mächtig und flexibel ist, aber der ggplot-Übersetzungsmechanismus scheint nicht in der Lage zu sein, damit umzugehen.