1.问题描述,我在for循环里面画了若干张图,想要每一页放4个,得到一个多页pdf,使用cowplot包的plot_grid函数可以拼接一页,这样就需要很多很多行命令,并且要随着图片数量的改变进行改变。像这样,3页pdf,手写出来。但是很多的时候没有办法。
pdf("02.pal.all_cell.pdf",width=4,height=4)
plot_grid(pp1,pp2,pp3,pp4,ncol=2,nrow=2,hjust=1.5)
plot_grid(pp5,pp6,pp7,pp8,ncol=2,nrow=2,hjust=1.5)
plot_grid(pp9,ncol=2,nrow=2,hjust=1.5)
dev.off()
2.解决方法
①把全部图片(不管多少个)放到一个list中,本次为pp_list,里面存了所有的图
②每次把pp_list中取前4个来画一页pdf,不足4个的直接全部画出来
n_pdf=ceiling(length(pp_list)/4) ##判断一页4张图,需要多少页pdf
pdf("02.test.pdf",width=4,height=4)
for (i in 1:n_pdf){
if (length(pp_list) > 4){
new_list=pp_list[c(1,2,3,4)]
pp_list=pp_list[-c(1,2,3,4)]
print(plot_grid(plotlist=new_list,ncol=2,nrow=2,hjust=1.5))
} ##当list中存在的图数量>4时,把前4个给到画图的newlist中并在一页pdf画出来;最后在原始list删除这4个图
else {
new_list=pp_list
print(plot_grid(plotlist=new_list,ncol=2,nrow=2,hjust=1.5))
}##当list中存在的图数量≤4时,整个list给到现在的newlist中并在一页pdf画出来
}
dev.off()
完成啦
网友评论