Matplotlib savefig函数在Spyder中不起作用

时间:2019-01-20 09:41:07

标签: python matplotlib spyder

我正在使用Spyder环境。绘图后,我放置了savefig函数。但这并未将图保存在相关文件夹中。

部分代码-

for t in range(1,int(TotT/dt)):
    plt.clf()

    v2_a=(dt*1E-15)*f(x2[-1],v2[-1])    # Heat Bath for site 2. Time step converted to fs.
    v2_b=(dt*1E-15)*f(x2[-1]+(dt*1E-15)*v2[-1],v2[-1]+v2_a)
    v2_next=v2[-1]+0.5*(v2_a+v2_b)

    x2_a=(dt*1E-15)*v2[-1]
    x2_b=(dt*1E-15)*(v2[-1]+v2_a)
    x2_next=x2[-1]+0.5*(x2_a+x2_b)

    v2.append(v2_next)
    x2.append(x2_next)

    E2=Lambda*x2[-1]

    prop_tdep=np.zeros([720,720],dtype=complex)

    np.fill_diagonal(prop_tdep[:360,:360],1)
    np.fill_diagonal(prop_tdep[360:,360:],np.exp(-1j*E2*dt/hbar))

    prop_1=np.matmul(prop_tdep,psi[:,t-1]) #First multiplication in time propagation 

    psi[:,t]=np.matmul(prop_0,prop_1)

    if t%int(1/dt)==0:
        plt.plot(prob_dens(np.fft.fftshift(psi[:360,t])),'xkcd:forest green')
        plt.title("Elapsed time = %s fs"%(t*dt))
        plt.xlabel("~Angular Momentum",size=18)
        plt.ylabel("Probability density",size=16)
        plt.tick_params(axis='both', labelsize=14,which='both')
        plt.tick_params(direction='in', length=7, width=1.1, colors='k',which='major')
        plt.tick_params(direction='in', length=4, width=1.1, colors='k',which='minor')
        #plt.axes().yaxis.set_minor_locator(MultipleLocator(0.1))
        #plt.axes().xaxis.set_minor_locator(MultipleLocator(30))
        plt.savefig("FT_2states_dyn_withBath-%04d"%(t*dt))
        print((t*dt))

2 个答案:

答案 0 :(得分:1)

您未指定要保存的格式。您可以通过将其附加到文件名来做到这一点,以便自动识别

plt.savefig("filename.png")

,或者,如果您不希望文件带有扩展名,则可以将其指定为参数。

plt.savefig("filename", format="png")

答案 1 :(得分:1)

按照此处的建议 (https://stackoverflow.com/a/49165652/3745353) 在 plt.close() 之后添加 plt.savefig(...) 对我有用。我假设它会在文件中打开一个图形设备,但在 IDE 中关闭它之前不会保存它(类似于 R 中的图形设备)。