如何将在 for 循环中生成的多个图形而不是 SUBPLOTS 保存为一个图形? [复制]

Posted

技术标签:

【中文标题】如何将在 for 循环中生成的多个图形而不是 SUBPLOTS 保存为一个图形? [复制]【英文标题】:How to save multiple figures, NOT SUBPLOTS, produced in a for loop as one figure? [duplicate] 【发布时间】:2019-02-06 15:26:09 【问题描述】:

在 Jupyter Notebook 中,我编写了以下代码,as MCVE:

import matplotlib.pyplot as plt
import numpy as np

x1 = np.linspace(-1, 1, 50)
for x in range(4):
    plt.figure()
    plt.plot(x1)
    plt.savefig(str(x)+".png") # save figures separately

正如预期的那样,它产生了 4 个图。它们连续位于彼此下方。

我想要一个保存的输出,包含所有 4 个绘图。我不介意 Jupyter Notebook 不显示绘图,只要它们被保存。

我的尝试:将图形分别保存为 0.png、1.png、2.png、3.png,然后将它们垂直合并。

我希望有一个更简单的方法来做到这一点。我怎样才能有一个保存的输出?

编辑:

按照建议,我可以做子图,如下所示:

fig,axes = plt.subplots(nrows=4)
fig.set_size_inches(8,12)
x1 = np.linspace(-1, 1, 50)
for ax in axes:
    ax.plot(x1)
plt.savefig("save_fig.png")

我想要很多人物,而不是一个有很多子情节的人物。 如何在不使用子图的情况下保存多个数字?

【问题讨论】:

创建一个包含 4 个子图的图形? 使用plt.subplots。阅读基本文档。 这个问题有几个重复项,在创建子图时有不同的答案。我建议将其标记为重复。 是的,subplot 方法有效。我想有其他方法,但它确实有效。 我不认为它是重复的,因为 subplot 方法基本上是创建一个图而不是保存它,我想将许多图保存为一个,所以 Q 没有通过 subplotting 来回答。 【参考方案1】:

初始化一个图形并为每个循环添加一个子图。然后在循环完成后保存!

【讨论】:

是的,我喜欢这种方法作为一种变通方法,但并没有真正展示如何处理多个地块,而不是一个包含许多子地块的大地块。

以上是关于如何将在 for 循环中生成的多个图形而不是 SUBPLOTS 保存为一个图形? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在for循环中执行多个查询

如何将 for 循环转换为流

需要使用 For 循环而不是 Azure Pipeline Template yaml 中的每个循环

R markdown:使用for循环生成文本并显示图形/表格

如何在bash shell中执行for循环生成的curl命令?

Foreach和doparallel而不是R中的for循环