2014-06-19 17 views
6

Vorrei ruotare un oggetto ggplot completo di 90 °.Ruota un oggetto plot ggplot2

Non desidero utilizzare coord_flip poiché questo sembra interferire con scale="free" e space="free" quando si utilizzano le faccette.

Ad esempio:

qplot(as.factor(mpg), wt, data=mtcars)+ 
facet_grid(.~vs + am, scale="free",space="free") 

enter image description here

vs

qplot(as.factor(mpg), wt, data=mtcars)+ 
    facet_grid(vs + am ~ ., scale="free",space="free")+ 
    coord_flip() 

enter image description here

quello che vorrei:

enter image description here

Probabilmente avrei bisogno di usare gridExtra.

+0

Perché avete bisogno di ruotare con ggplot2/griglia? Probabilmente è più semplice ruotare in qualsiasi software (ad esempio, latex o word) che si desidera utilizzare. – Roland

risposta

13
print(p, vp=viewport(angle=-90)) 
+0

La laboriosa alternativa che avevo trovato era 'grid.newpage() pushViewport (viewport (angolo = -90, larghezza = unità (7," pollici "), altezza = unità (7," pollici "))) grid.draw (ggplot_gtable (ggplot_build (p))) ' –

+1

Buono. Sei l'asso della griglia. (Probabilmente avrei appena stampato "landscape", ma posso vedere il valore di poter inviare questo in knitr o altri sistemi di markup –

+1

@ EtienneLow-Décarie se hai spinto un viewport, puoi usare 'print (p , newpage = FALSE) 'E se per qualche ragione vuoi disegnare un grob esplicitamente,' ggplotGrob' è un alias più breve – baptiste

1

È questo che ti aspettavi?

qplot(x=wt, y=as.factor(mpg), data=mtcars) + 
    facet_grid(vs + am ~ ., scale="free", space="free") 

"rotated" plot

+0

Sì, ma trasformare l'intera trama è quello che stavo cercando. –