R为单个pdf生成多个图

时间:2015-01-13 18:03:22

标签: r plot

我有一个约100个不同群组的清单;

categories <- c('cat1','cat2','cat3',....)

我想写一个循环,一次只抓取1个类别的数据,并生成一个图(x,y);例如......

for (i in 1:length(categories){
category_data <- data[which(data$category==categories[i]),]
plot(category_data$y,category_data$x)}
### however, I would like to save EACH plot to a single PDF that I can scroll through to quickly visualize everything at once

如何使用100个不同的图生成单个PDF?

3 个答案:

答案 0 :(得分:1)

您可以使用pdf函数(或png,jpeg等)生成多页pdf,生成所需的所有文件,然后使用dev.off关闭文件

pdf(file = "output.pdf")

for (i in 1:length(categories){
   category_data <- data[which(data$category==categories[i]),]
   plot(category_data$y,category_data$x)}

dev.off()

答案 1 :(得分:0)

在我的大学统计和微积分课程中,我使用R作为大部分图形。我发现将多个图表合并到一个PDF中的最佳方法是应用Separation of Concerns的原则。

R非常适合生成图表(我赞成png格式),但是LaTeX因为生成PDF而摇摆不定。我简化的工作流程看起来像这样:

  1. 在已知文件夹中生成图表,并使用顺序生成的名称(graph_01.png等)。
  2. 打开我保留的模板文件,以避免重新创建样板代码。
  3. 使用shell脚本生成插入图像所需的markup
  4. 进行任何手动清理,添加字幕等。
  5. 使用pdflatex
  6. 生成pdf

    非常简单,几乎完全自动化。

答案 2 :(得分:0)

基于OP想要每个PDF页面4个图表,我建议:

pdf('plots.pdf')
par(mfrow=c(2,2))
for (i in 1:length(categories){
    category_data <- data[which(data$category==categories[i]),]
    plot(category_data$y,category_data$x)}
dev.off()

如果OP决定每页绘制不同数量的图形,则可以更改mfrow参数。目前它设置为2行x 2列=每页4个图。