R为单个pdf生成多个图

R Generate Multiple Plots for a single pdf

我有大约 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?

我在大学统计和微积分 类 中的大部分绘图中使用了 R。我发现将多个图合并到单个 PDF 中的最佳方法是应用 Separation of Concerns.

的原则

R 非常擅长生成绘图(我喜欢 png 格式),但 LaTeX 在生成 PDF 方面表现出色。我的简化工作流程如下所示:

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

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

您可以使用 pdf 函数(或 png、jpeg 等)生成多页 pdf,生成您想要的所有文件,然后使用 dev.off[=11= 关闭文件]

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()

基于 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 个绘图。