保存重复功能生成的图

Posted

技术标签:

【中文标题】保存重复功能生成的图【英文标题】:Save plots generated by repeat function 【发布时间】:2021-07-13 14:02:17 【问题描述】:

目前我正在寻找将 72 个绘图保存到 PDF 文件的解决方案。 这 72 个地块是通过 function 和以下代码 repeat 创建的。

ID 代表我的数据集中的一个人。此人的 ID 附加了多行数据。要转到下一个人,我使用 ID = ID + 1

使用下面的代码,我设法创建了一个 PDF 文件,但这是一个包含 72 页的 PDF 文件。我想每行有 4 个地块。 nrow = 4 的概念就像您在 grid.arrange 中使用的一样。最好每行 4 个,每页 24 个。

pdf("plot1.pdf")
 repeat 
  ID = ID + 1
  print(ggplot(ID))
  if (ID == 72)
    break
dev.off()

【问题讨论】:

您的问题在很多方面都无法重现,请阅读***.com/q/5963269、minimal reproducible example 和***.com/tags/r/info(r 标签页顶部)了解如何使用示例数据改进问题以及最少但完整的工作代码。 Tangent:虽然repeat 没有错,但执行for (x in ID) print(ggplot(x)) 可能更直观(也可能更安全),因为它会在IDs 用尽时自行终止,有如果有任何差距是没有风险的,并且(对我而言)它更容易阅读/理解并因此维护。 @r2evans 这只是一个关于如何在 PDF 页面上并排获取导出图的问题。我想提一下重复功能,以便知道我的方法是什么。我当然可以提供一个完整的可重现示例,但我认为不需要它,因为问题是:如何在 PDF 页面上并排获取导出的图(nrow = 4 in anrange.grid - 例如)同时用我的方法。如果您仍需要可重现的示例,请参阅:***.com/questions/67128043/…(由我发布) 您在您的问题中引用了grid.arrange()... 是否有特殊原因导致您在这里不可以选择?其他包中也有类似的功能,可以指定列/行数,例如cowplot,通过plot_grid() @chemdork123 据我所知,您需要参考实际绘图才能创建网格,例如:plot1 <- ggplot(df, aes(x = x, y = y)。在 grid.arrange 中,您将参考 plot1 等,然后使用 nrow = 4 并排获得 4 个图形(如果您提供 4 个图形)。因为我没有专门创建绘图,但更像是通过函数生成它们并重复,因为需要根据人员 ID 计算不同的数据,所以我不能真正使用 grid.arrange。我知道 grid.arrange() 是如何工作的,因此我引用 nrow = 4 因为我想要那种结果。 【参考方案1】:

我仍然不确定这是否是一个合法的解决方案,但至少现在已经修复了!

显然我正在寻找这样的解决方案:

plot.list <- list()
for(i in 1:72)
  plot.list[[length(plot.list) + 1]] <- plot_utility(i)


grid1 <- grid.arrange(grobs = plot.list, ncol = 4)

ggsave("plot1.pdf", 
       plot = grid1, 
       device = "pdf", 
       scale = 2,
       width = 25, 
       height = 20, 
       units = c("cm")
)

【讨论】:

以上是关于保存重复功能生成的图的主要内容,如果未能解决你的问题,请参考以下文章

如何生成保存到数组中的随机字符串? c# [重复]

hibernate 保存的时候ID重复

无法访问 UITableViewCell 中 UIView 的图层属性 [重复]

结对编程——队友代码分析

保存子实体的重复键值

如何在另一个python图中添加不同的图(作为插图)[重复]