以pdf格式在多个页面上打印多个图

时间:2017-07-20 16:07:29

标签: r pdf plot

我有大量的质谱数据,我想在PDF格式的几页中合理地分布。这个想法是,这些图是垂直对齐的,以便于比较。这就是为什么我需要它们具有一定的可读尺寸,我希望每组图在一个页面上一起进行,下一页在下一页上进行,依此类推。 到目前为止,我设法得到了:对于多个文件,每个文件的页面尺寸很好;或:在一个pdf中的几页上尺寸不合适的图。我想在一个pdf中的几个页面上有很好的尺寸图。

我的数据位于COMBO

这是我的解决方案代码(1):

totalrows <- nrow(COMBO)
pagesneeded <- ceiling(totalrows/9)

for(i in 1:pagesneeded){
combolongrow <- melt(COMBO, id.vars = "UnID")
pl<- ggplot(combolongrow, aes(x=variable , y=value, group=UnID)) +
    geom_line() +
    theme(strip.text.y = element_text(size=6)) +
    xlab("Fraction") +
    ylab("iBAQ") +
    facet_wrap_paginate(~UnID, ncol = 1, nrow = 9, page = i, 
    strip.position="top", scales="free_y") 
    ggsave(paste("plot-", i, ".pdf", sep=""), width=21, height=29, units ="cm", dpi = 300)
}

这为每组情节创建了一个间距很大的A4 pdf,在我的情况下总共有8个pdf文件。

输出:所有间距都很好,但每个页面都是一个单独的文件 All spacing is nice, but every page is a separate file.

示例(2):

totalrows <- nrow(COMBO)
pagesneeded <- ceiling(totalrows/9)

pdf("Plots.pdf", paper = "a4")
for(i in 1:pagesneeded){
combolongrow <- melt(COMBO, id.vars = "UnID")
pl<- ggplot(combolongrow, aes(x=variable , y=value, group=UnID)) +
    geom_line() +
    theme(strip.text.y = element_text(size=6)) +
    xlab("Fraction") +
    ylab("iBAQ") +
    facet_wrap_paginate(~UnID, ncol = 1, nrow = 9, page = i, strip.position="top", scales="free_y") 

   print(pl)
}
dev.off()

这会创建一个文件(yay),但是这些图的大小是默认的图形设备大小,这是错误的宽高比,并且在我的绘图的所有四边留下了大的边距并使数据不可读。

输出:间距很差,但所有页面都会自动放在一个文档中。 Spacing is bad, but all pages are automatically put together in one document.

如何将ggsave中的所有图表合并到一个文件中?或者我如何更改地块的尺寸以便pdf()以合适的尺寸拾取它们?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

试试这个:

pdf("Plots.pdf", paper = "a4")
par.save <- par(mfrow = c(4, 1))
for(i in 1:20) {
  plot(1:10)
}
par(par.save)
dev.off()