我问了有关网格排列的问题HERE,并得到了一个很好的答复。我现在想减少地块之间的空间,但出现错误。首先,我提供了有效的代码,然后是错误代码(我尝试过的代码)。我实际上找不到grid.arrange,并且一直以为它来自gridExtra,但我可能不正确。

所以2个部分:

  • 如何使用网格排列减少图之间的空间
  • 在哪里可以找到有关grid.arrange的文档(Baptiste,我知道您维护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)
    

    最佳答案

    我对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)
    

    关于减少网格之间的间距,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13299496/

    10-12 19:02