在R中打印绘图时,第一页为空

3

我正在尝试创建一个带有多个图表的PDF文档。更具体地说,我想将我的图表保存为每页4个的格式。因此,我在R中编写了以下代码(它可以工作,但会留下一页空白 -即第一页-):

pdf("Plots/plots_numeric_four_in_page.pdf",paper="a4r",width = 14)

graphlist <- lapply(3:NCOL(agg_num), function(i) {
  force(i)
  tempColName=dataName_num[i]
  print (tempColName)
  p<-qplot(Group.1,agg_num[[tempColName]],data = agg_num,color=Group.2,geom = "line",main=tempColName) + xlab("Date") + ylab(paste("Count of ", tempColName)) +  geom_line(size=1.5)+ scale_x_date(labels = date_format("%m/%Y"))+ 
    theme(legend.position="bottom",legend.direction="horizontal")+ guides(col=guide_legend(ncol=3))
})
do.call("marrangeGrob",c(graphlist,ncol=2,nrow=2))
dev.off()

它能够正确地在PDF中显示大约50个绘图,每页4个。然而,它会留下第一页空白,从第二页开始。我查看了marrangeGrob选项,但我找不到任何可以解决问题的东西。您是否知道任何解决此问题的方法或变通方法?

1个回答

0

gridExtra中,ggplot2存在一个已知的bug,这会导致一些包含ggplots的marrangeGrob出现问题。手动覆盖grid.draw.arrangelist函数(src)(marrangeGrob返回一个arrangelist对象)可能会潜在地解决它(建议here)。

grid.draw.arrangelist <- function(x, ...) {
  for(ii in seq_along(x)){
    if(ii>1) grid.newpage()  # skips grid.newpage() call the first time around
      grid.draw(x[[ii]])
  }
}

定义一个新类来处理涉及的arrangelist对象并对其应用修复,可能比在范围内覆盖每个marrageGrob调用的grid.draw更安全。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接