将多个数字保存到单独的文件中,即使它们正确显示()也不起作用

我正在尝试生成两个不同的图形来分隔使用相同基本数据的文件(.png 图像),但我得到了空白的白色图像。但是,当在带有 plt.show() 语句的 jupyter 笔记本中显示时,这两个数字似乎都不错。我的相关代码如下所示:


plt.figure(1)

fig1, axs1 = plt.subplots(2,2)

plt.figure(2)

fig2, axs2 = plt.subplots(2,2)


# generate 4 datasets in a for loop

for i in range(4): 

    x,y = createRandomData(parameters)

    fit1 = doFit1(x,y)

    plt.figure(1)

    axs1[i//2,i%2].plot(x,y,color='black',linewidth = 1)

    axs1[i//2,i%2].plot(x,fit1,color='green',linewidth = 1)

    fit2 = doFit2(x,y)

    plt.figure(2)

    axs2[i//2,i%2].plot(x,y,color='black',linewidth = 1)

    axs2[i//2,i%2].plot(x,fit1,color='green',linewidth = 1)

plt.figure(1)

plt.gcf().set_size_inches(12,8)

plt.gcf().savefig('dataWithFit1.png', dpi=200)

plt.show()

plt.figure(2)

plt.gcf().set_size_inches(12,8)

plt.gcf().savefig('dataWithFit2.png', dpi=200)

plt.show()

无法弄清楚为什么 savefig() 不产生正确的输出,即使下面的 show() 语句产生正确的输出到 jupyter notebook 内的浏览器。


我也尝试过 variablefig1而不是plt.gcf().


有什么建议么?


猛跑小猪
浏览 143回答 1
1回答

慕盖茨4494581

我已将代码修改为:fig1, axs1 = plt.subplots(2,2)fig2, axs2 = plt.subplots(2,2)# generate 4 datasets in a for loopfor i in range(4):     x,y = createRandomData(parameters)    fit1 = doFit1(x,y)    axs1[i//2,i%2].plot(x,y,color='black',linewidth = 1)    axs1[i//2,i%2].plot(x,fit1,color='green',linewidth = 1)    fit2 = doFit2(x,y)    axs2[i//2,i%2].plot(x,y,color='black',linewidth = 1)    axs2[i//2,i%2].plot(x,fit2,color='green',linewidth = 1)fig1.set_size_inches(12,8)fig1.savefig('dataWithFit1.png', dpi=200)fig1.show()fig2.set_size_inches(12,8)fig2.savefig('dataWithFit2.png', dpi=200)plt.show()此外,最后一个绘图命令中有一个错字(应该绘制 fit2 而不是 fit1)在“伪造”帖子的代码时引入。它现在正确显示并保存数字。但是,我仍然 UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure.在 jupyter notebook 中收到警告。因此,如果你们中的任何一个对此有任何见解,请添加评论以确保完整性。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python