gpt4 book ai didi

r - 将在 for 循环中创建的多个 ggplots 保存到单个图

转载 作者:行者123 更新时间:2023-12-04 02:06:13 27 4
gpt4 key购买 nike

关闭。这个问题需要debugging details .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

2年前关闭。




Improve this question




我想在一个图中有多个 ggplots 图。
问题:尝试使用 for 循环创建绘图列表(稍后在 grid.arrange 中使用)时,该列表返回空。
我使用了这两个帖子:

1) create figures in a loop
2) use grid.arrange to save in a single fig

想出以下代码(更简单的版本)* 来绘制概率密度曲线:

#models = 33 obs of 1 variable
plotlist = list()
for (i in 1:33)
{
modname = models$col1[i]
p<- ggplot() + geom_line(aes(xi,yi)) + geom_line(aes(ai,bi)) +
ggtitle(modname) ## the x,y,a,b are just illustrative.
#In reality, each pair is produced using fitdist and dgamma functions for
# data (single column) from separate .csv
ggsave(outpath)
plotlist[[i]] = p

}
main <- grid.arrange(grobs=plotlist,ncol=6)
main
ggsave("bigplot.png",p)

问题(进一步解释): plotlist显示为空列表。因此, grid.arrange 只绘制了在最后一个循环中创建的子图 33 次。但是,奇怪的是 grid.arrange 图为所有子图都有正确的标题(使用 modname 分配)!!!在附图中,您将看到除标题外所有子图都相同。由于我也保存了单个子图,因此我知道问题不在于子图的数据/代码。
main
我对 R 相当陌生,这是我的第一个 ggplot2(* 原谅多个 geom_line())。结果,我花了一段时间才弄清楚如何拟合分布并绘制它们(谢谢,stackoverflow !!)。因此,这里的任何帮助将不胜感激。

更新:我能够使用 完成上述操作PIL python中的包 .但是,我真的很希望能够在 R 中做到这一点。

最佳答案

如果我对你的理解正确(我不确定),这只是关于保存你的绘图文件。

我认为问题很简单,grid.arrange()不适用于 last_plot() ,这是什么ggsave显然使用。所以最好明确说明你希望它保存什么情节。

这是一个简单的工作示例,图较少,没有回归模型,只有一些随机图:

library(ggplot2)
library(gridExtra)
plotlist = list()
n <- 100
for (i in 1:9)
{
df <- data.frame(x=rnorm(n),y=rnorm(n))
pname <- paste0("Plot-",i)
p<- ggplot(df) + geom_point(aes(x,y)) + ggtitle(pname)
ggsave(paste0(pname,".png"),p)
plotlist[[i]] = p
}
p <- grid.arrange(grobs=plotlist,ncol=6)
ggsave("bigplot.png",p)

文本输出:

Saving 4.76 x 5.28 in image
Saving 4.76 x 5.28 in image
Saving 4.76 x 5.28 in image
Saving 4.76 x 5.28 in image
Saving 4.76 x 5.28 in image
Saving 4.76 x 5.28 in image
Saving 4.76 x 5.28 in image
Saving 4.76 x 5.28 in image
Saving 4.76 x 5.28 in image
> p <- grid.arrange(grobs=plotlist,ncol=3)
> ggsave("bigplot.png",p)
Saving 4.76 x 5.28 in image


最后的情节:

enter image description here

关于r - 将在 for 循环中创建的多个 ggplots 保存到单个图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43216262/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com