2012-11-08 41 views
10

我問了一個關於網格排列的問題HERE並得到了非常好的迴應。我想現在縮小地塊之間的空間,但是出現錯誤。首先,我介紹可以工作的代碼,然後提供錯誤代碼(我試過的)。我實際上找不到grid.arrange,並一直認爲它來自gridExtra,但我可能不正確。減少grid.arrange重複之間的空間

所以2部分:

  1. 我怎樣才能減少小區之間的空間網格安排
  2. 我在哪裏可以找到文檔中關於grid.arrange(巴蒂斯特我知道你保持gridExtra所以請糾正我的想法或使用如果我不是在它的目的的方式使用它包)。

好的壞的代碼空間

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) 

錯誤代碼(我試試)

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) 

錯誤:

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

回答

11

我被誤解ggplot:

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

是, doc說: plot.margin |整個繪圖周圍的邊距(單位爲頂部,右側,底部和左側邊距的大小)

相關問題