减少grid.arrange地块之间的空间(reduce space between grid.ar

2019-07-03 16:52发布

我问了问这里大约电网安排,并得到了极好的响应。 我想,以减少小区之间的空间,但现在得到一个错误。 首先我介绍,工程的代码,然后错误代码(我试过)。 我不能真正找到grid.arrange ,并一直认为它来自gridExtra但我可能是不正确的。

所以两个部分:

  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)

Answer 1:

我被误解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)


Answer 2:

是的, DOC说:plot.margin | 围绕整个小区裕度(单元与顶部的尺寸,右,下和左边缘)



文章来源: reduce space between grid.arrange plots