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

时间:2015-07-02 08:44:34

标签: r plot

我正在尝试创建一个包含多个图的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 :(得分:0)

gridExtra中的ggplot2之间存在一个已知的错误,导致包含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对象定义新类可能更安全,并对其应用修复,而不是覆盖范围内每grid.draw次调用的marrageGrob