【问题标题】:Matplotlib savefig function not working in SpyderMatplotlib savefig 函数在 Spyder 中不起作用
【发布时间】:2019-06-13 23:18:02
【问题描述】:

我正在使用 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))

【问题讨论】:

  • 您的工作目录可能不是您认为的那样,要么在 spyder 终端上执行 %pwd 以查看您的位置,要么在 savefig 中使用完整路径而不是相对路径
  • 我尝试了 %pwd 命令并显示了我想要保存它的确切目录。
  • 尝试完整路径以确定,我仍然怀疑
  • 试过 plt.savefig("/Users/atreyamajumdar/Desktop/Quantum Yield/FT_2states_dyn_withBath-%04d"%(t*dt)) 还是一样的问题。您认为这可能与 spyder 如何在内部保存数字有关吗?

标签: python matplotlib spyder


【解决方案1】:

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

plt.savefig("filename.png")

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

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

【讨论】:

  • 那也没用。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-18
    • 2016-06-21
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 2015-09-12
    • 2019-06-11
    • 1970-01-01
    相关资源
    最近更新 更多