Matplotlib plt对象在绘图间共享

Matplotlib plt对象在绘图间共享,matplotlib,Matplotlib,我有两个函数,一个绘制时间序列线,另一个绘制自动相关 def plotacorr(dfasst): # Plot autocorrelation plt.acorr(dfasst, maxlags=3) # Add labels to autocorrelation plot plt.title('Autocorrelation of Asset Balances with previous Months Balances') plt.xlabel('La

我有两个函数,一个绘制时间序列线,另一个绘制自动相关

def plotacorr(dfasst):
    # Plot autocorrelation
    plt.acorr(dfasst, maxlags=3)
    # Add labels to autocorrelation plot
    plt.title('Autocorrelation of Asset Balances with previous Months Balances')
    plt.xlabel('Lag in Months')
    plt.ylabel('Autocorrelation')

    # Display the autocorrelation plot
    #plt.show()
    plt.savefig('C:/acorr_assets.jpeg')

def plottrend(df_acctsmry2):
    fig, ax = plt.subplots()
    fmt = '${x:,.0f}'
    tick = mtick.StrMethodFormatter(fmt)
    ax.yaxis.set_major_formatter(tick) 

    df_acctsmry2.plot(x='REPORTING_DATE',ax=ax,figsize=(20,12))
    plt.xticks(fontsize=20)
    plt.yticks(fontsize=20)
    plt.xlabel('REPORTING_DATE', fontsize=18)
    #plt.show()
    plt.savefig('C:/output.jpeg')
我首先调用plottrend,然后调用plotacorr
但似乎plt对象在两个图之间以某种方式共享,因此在自相关图中,我看到与plottrend相同的结果。

取消对每个函数的
plt.show()
注释,这应该做到(或者在调用函数之间调用
plt.show()

取决于您所说的刷新。这更像是一个“转储”语句。plt句柄中的任何内容都会显示出来。由于您没有创建第二个地物,因此代码将覆盖现有地物,并且应仅显示第二个绘图或在同一地物中绘制所有地物。解决此问题的另一种方法是使用plt.figure()生成第二个地物