【发布时间】:2017-12-26 11:06:17
【问题描述】:
我有很多质谱数据图,我想将它们合理地分布在 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 文件。
输出:所有间距都很好,但每一页都是一个单独的文件
示例(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()
这会创建一个文件(耶),但绘图的大小调整为默认的图形设备大小,这是错误的纵横比,并且在绘图的所有四个边上都留下了很大的边距,使数据不可读。
输出:间距不好,但所有页面都会自动放在一个文档中。
我该怎么做才能将通过ggsave 的所有图放到一个文件中?或者我怎样才能改变我的地块的尺寸,以便pdf() 以正确的尺寸拾取它们?
感谢您的帮助!
【问题讨论】:
-
你试过用
par(mfrow = c(9, 1))举例吗? -
我会在哪里添加它来做什么?我现在尝试了两种可能性,但无法更改输出。我尝试阅读有关
par()的内容,但没有完全理解它的作用。 -
也许您应该使用您的第一个解决方案并稍后合并 PDF 文件。例如,您可以使用
plotflow:::mergePDF(请参阅stackoverflow.com/a/26846704/6103040)。 -
谢谢。我试过了,但它让我陷入了要安装的软件包的困境,无论出于何种原因,都会在我的 R 安装(RStudio,R 3.4.x)上抛出很多错误。我想我的最终解决方案是使用外部 pdf 合并器将输出文件合并为一个大 pdf。
-
你是用
devtools::install_github("trinker/plotflow")安装的吗?我不必安装任何软件包。