Python 在迭代图的for循环上使用plt.savefig返回空白图像

Python 在迭代图的for循环上使用plt.savefig返回空白图像,python,matplotlib,Python,Matplotlib,好的,如果以前有人问过这个问题,我很抱歉,但是我在试图对一些绘图执行plt.savefig时遇到了一些问题,我想将这些绘图保存到我计算机上的某个目录中 目前,我通过以下代码生成了481个绘图: ID=np.array(table['ID']) 我的ID数组来自astropy表中的一个独立列,我将它做成一个数组,以匹配其他变量的格式 path=str('/Volumes/Desktop/Folder') filename=str('/Filename_ID_') outfilename=pat

好的,如果以前有人问过这个问题,我很抱歉,但是我在试图对一些绘图执行plt.savefig时遇到了一些问题,我想将这些绘图保存到我计算机上的某个目录中

目前,我通过以下代码生成了481个绘图:

ID=np.array(table['ID'])

我的ID数组来自astropy表中的一个独立列,我将它做成一个数组,以匹配其他变量的格式

path=str('/Volumes/Desktop/Folder')
filename=str('/Filename_ID_')
outfilename=path+filename
outfilename
yra = [0, 3]


def PLOTS(M,P,Match,Mean,P25,P50,P75):
    ax=plt.subplot();
    return (plt.figure(),
            ax.plot(M,P,'b',lw=2),
            ax.plot((Match*np.ones(2)), yra, 'red',lw=3, label='match'),
            ax.plot((P25*np.ones(2)), yra, 'b--', label='P25'),
            ax.plot(P50*np.ones(2), yra, 'c--', label='P50',linewidth=4),
            ax.plot(P75*np.ones(2), yra, 'r--', label='P75'),
            ax.plot(Mean*np.ones(2), yra, 'darkgoldenrod',label='mean'),
            ax.set_xlabel('M',fontsize=14),
            ax.set_ylabel('P',fontsize=14),
            ax.legend(fontsize=10,loc='upper right'),
            plt.savefig(outfilename+str(ID)+'.pdf')));

for i in range(len(M)):
    print(PLOTS(M, P[i],Matches[i],Mean[i],P25[i],P50[i],P75[i]))
    plt.savefig(outfilename+str(ID[i])+'.pdf')

这将输出我的绘图,但当我检查桌面中的文件夹时,图像为空白。 我知道如果在plt.savefig()之前执行plt.show(),那么这就是为什么会得到一个空白图像的原因,但我根本没有执行plt.show()。 我尝试在函数和for循环中的plt.savefig命令之后添加plt.show()命令,但仍然得到一个空白图像

我还查看了其他类似于我的帖子,例如,但这仍然无助于解决我的问题


我非常感谢你们提供的任何帮助,如果有人问这个问题,我再次道歉

你为什么打两次电话给plt.savefig?如果将格式更改为.png,它是否有效?我在函数和for循环中调用了plt.savefig,希望它能够实际生成图像。我曾尝试在for循环中仅使用plt.savefig,但仍然不起作用。我也尝试过使用“.png”格式,但它仍然输出一个空白图像。您是否尝试过在循环中不使用print()而只调用func绘图?1.你试过打印我们的ID数组吗?这里的ID=np.array(表[['ID'])2.您使用函数def真正想要返回什么?只返回绘图。将所有其他内容都放在函数中。我将定义一个图形并调用
fig.savefig(…)
。能否尝试不将所有绘图代码放在函数
PLOTS
返回的元组中。除了糟糕的代码样式之外,我不确定这是否能按预期工作。