我正在尝试创建一个包含多个图的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选项,但我无法找到解决问题的方法。您知道任何解决方法或解决此问题的方法吗?
答案 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
。