2015-10-05 1 views
9

Voglio utilizzare ggplot2 con grid.arrange per generare più trame con trama. Qualche cosa di simile a questo:Più grafici ggplot2 con trama

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) 

Tuttavia, io sono sempre "Errore nel gg2list (p): Non ci sono livelli in trama"

Eventuali suggerimenti

+0

Non posso anche ottenere plotly da installare in R 3.1.3. Che versione stai usando? –

+0

Vedi questo: https://plot.ly/r/getting-started/ –

risposta

8

utilizzare la funzione subplot di plotly:

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

Sto avendo questo problema me stesso e Non penso che esista attualmente una soluzione per farlo nel modo in cui stai descrivendo.

La funzione gg2list contenuta nella chiamata a ggplotly si aspetta di poter iterare sui livelli di un oggetto ggplot per creare l'oggetto grafico corrispondente. Se passi alla funzione ggplotly con il debugger di RStudio, puoi vedere i vari modi in cui tenta di scorrere l'oggetto che riceve per estrarne le proprietà.

Non sa cosa fare con l'oggetto restituito dalla funzione organizzGrob perché non è solo un singolo oggetto ggplot (è un arrangiamento grob, ecc.).

La chiamata di classe() sugli oggetti in questione illustra un po 'questo punto.

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

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

penso in modo da avere più trame dirige nello stesso oggetto plotly, avremo bisogno di utilizzare le opzioni di sfaccettatura in ggplot o le associazioni plotly R nativi. Sfortunato, perché gridExtra è molto potente e flessibile, ma il meccanismo di traduzione ggplot non sembra in grado di gestirlo.