2012-11-08 14 views
10

Ho fatto una domanda su HERE sulla griglia e ho ottenuto una risposta eccezionale. Voglio ridurre lo spazio tra i grafici ora ma ho un errore. Per prima cosa presento il codice che funziona e quindi il codice di errore (cosa ho provato). Non riesco a trovare effettivamente grid.arrange e ho sempre pensato che provenga da gridExtra ma potrei non essere corretto.ridurre lo spazio tra i diagrammi grid.arrange

SO 2 parti:

  1. Come posso ridurre lo spazio tra le trame con griglia di organizzare
  2. Dove posso trovare documentazione su grid.arrange (Baptiste So che si mantiene gridExtra quindi si prega di correggere il mio pensiero o l'utilizzo del pacchetto se non sto usando nel modo in cui è stato destinato.)

buon codice cattivo spazio

require(ggplot2);require(gridExtra) 
A <- ggplot(CO2, aes(x=Plant)) + geom_bar() + 
    coord_flip() + ylab("") 
B <- ggplot(CO2, aes(x=Type)) + geom_bar() +coord_flip() 


gA <- ggplot_gtable(ggplot_build(A)) 
gB <- ggplot_gtable(ggplot_build(B)) 
maxWidth = grid::unit.pmax(gA$widths[2:3], gB$widths[2:3]) 
gA$widths[2:3] <- as.list(maxWidth) 
gB$widths[2:3] <- as.list(maxWidth) 
grid.arrange(gA, gB, ncol=1) 

codice Bad (la mia prova)

require(ggplot2);require(gridExtra) 
A <- ggplot(CO2, aes(x=Plant)) + geom_bar() + 
    coord_flip() + ylab("") + theme(plot.margin= unit(1, "cm")) 
B <- ggplot(CO2, aes(x=Type)) + geom_bar() +coord_flip() 


gA <- ggplot_gtable(ggplot_build(A)) 
gB <- ggplot_gtable(ggplot_build(B)) 
maxWidth = grid::unit.pmax(gA$widths[2:3], gB$widths[2:3]) 
gA$widths[2:3] <- as.list(maxWidth) 
gB$widths[2:3] <- as.list(maxWidth) 
grid.arrange(gA, gB, ncol=1) 

L'errore: ggplot

Error in `[.unit`(theme$plot.margin, 2) : 
    Index out of bounds (unit subsetting) 

risposta

11

ero equivoco:

require(ggplot2);require(gridExtra) 
A <- ggplot(CO2, aes(x=Plant)) + geom_bar() + 
    coord_flip() + ylab("") + theme(plot.margin= unit(c(1, 1, -1, 1), "lines")) 
B <- ggplot(CO2, aes(x=Type)) + geom_bar() +coord_flip() + 
    theme(plot.margin= unit(rep(.5, 4), "lines")) 


gA <- ggplot_gtable(ggplot_build(A)) 
gB <- ggplot_gtable(ggplot_build(B)) 
maxWidth = grid::unit.pmax(gA$widths[2:3], gB$widths[2:3]) 
gA$widths[2:3] <- as.list(maxWidth) 
gB$widths[2:3] <- as.list(maxWidth) 
grid.arrange(gA, gB, ncol=1) 
-2

Sì, Il doc dice: plot.margin | margine attorno all'intero grafico (unità con le dimensioni dei margini superiore, destro, inferiore e sinistro)

Problemi correlati