从marrangeGrob(或arrangeList)pdf中删除页码

时间:2013-09-19 06:39:57

标签: r gridextra

marrangeGrob中的

gridExtra在行,列和页面中排列grobs(在我的情况下通常为ggplots)。它还对页面进行编号。

require(ggplot2)
require(plyr)
require(gridExtra)

p <- function(plotdata) {
    x <- ggplot(plotdata, aes(wt, mpg)) + 
        geom_point() + 
        ggtitle(plotdata$gear[1])
    return(x)
}

all <- dlply(mtcars, .(gear), p)

allarranged <- do.call(marrangeGrob, c(all, nrow=1, ncol=2))
ggsave("multipage.pdf", allarranged, width=12)

这是一个愚蠢但可重复的例子。

现在检查str(allarranged[[1]])的输出以显示页码的对象。减少到必需品,他们在这里:

[[1]]
  $ children     :List of 5
  ..$GRID.frame.1925:List of 6
  .. ..$ children     :List of 5
  .. .. ..$ GRID.cellGrob.1927:List of 10
  .. .. .. ..$ children     :List of 1
  .. .. .. .. ..$ GRID.text.1845:List of 11
  .. .. .. .. .. ..$ label        : chr "page 1 of 2"

我编写了前几行,因为我无法将str()的输出写入文件。不过,这一点很重要。 $label是许多祖父母的问题孩子。每$label还有几个arrangelist {arrangeListarrangeGrob的输出类。

一旦你弄清楚了$label的位置,那么这是有效的:     allarranged [[1]] $ children $ GRID.frame.1770 $ children $ GRID.cellGrob.1772 $ children $ GRID.text.1690 $ label&lt; - NULL

但是如何预测整棵树,或通过它来寻找$label s?如果那不是一个有趣的问题,我可能只是联系gridExtra维护者。

1 个答案:

答案 0 :(得分:5)

您需要将top=NULL传递给marrangeGrob

all <- dlply(mtcars, .(gear), p)

allarranged <- do.call(marrangeGrob, c(all, nrow=1, ncol=2, list(top=NULL) ))
ggsave("multipage.pdf", allarranged, width=12)