在matplotlib的循环中保存图形[duplicate]

um6iljoc  于 2023-03-09  发布在  其他
关注(0)|答案(1)|浏览(141)
    • 此问题在此处已有答案**:

Saving a figure after invoking pyplot.show() results in an empty file(4个答案)
昨天关门了。
我尝试在循环迭代时保存多个直方图,但最终保存为空白图像。我在循环外尝试了完全相同的代码,它似乎工作,所以我不知道为什么它在循环中不工作。
这就是我现在拥有的

for x in range(len(7)):
    plt.figure(figsize = (10, 6))
    hist, bins, patches = plt.hist(list[x], 100)
    plt.title('pol frac reg '+ str(x))
    plt.show()
    plt.savefig('pol_frac_' + str(x))
mzaanser

mzaanser1#

当你显示一个图像时,它会在之后清除它。如the Matplotlib documentation中所解释的:
如果你想要一个图像文件和一个用户界面窗口,在pyplot.show之前使用pyplot.savefig。在(阻塞的)show()结束时,图形被关闭,因此从pyplot中取消注册。之后调用pyplot.savefig将保存一个新的空图形。
尝试先保存,然后显示:

for x in range(len(7)):
    plt.figure(figsize = (10, 6))
    hist, bins, patches = plt.hist(list[x], 100)
    plt.title('pol frac reg '+ str(x))
    plt.savefig('pol_frac_' + str(x))
    plt.show()

相关问题