我如何让 statsmodels.api 只绘制一次时间序列图?

raj*_*ajn 4 python plot matplotlib ipython ipython-notebook

我在为天气时间序列绘制 AR 和 MA 模型时遇到问题。例如:

from statsmodels.tsa.arima_process import arma_generate_sample

def gen_ar2(alpha1,alpha2,size):
    ar = [1,-alpha1,-alpha2]
    ma = [1]
    return arma_generate_sample(ar,ma,size)
Run Code Online (Sandbox Code Playgroud)

因此,如果我想绘制让我们说 x(t) = 0.75 x(t-1) - 0.125 x(t-2) + w(t),其中 w(t) 是平均值为 0 且方差为 1 的正态分布(让说)...在 ipython notebook 上绘制这通常会绘制两次,即

sm.graphics.tsa.plot_acf(gen_ar2(0.75,-0.125,size=5000),lags=40)
Run Code Online (Sandbox Code Playgroud)

这为我创建了两个图而不是一个。我如何阻止 ipython 这样做?

谢谢

Jak*_*kob 8

您会看到两个图,因为该plot_acf函数创建了图返回了图形对象。在“普通”python IDE 或脚本中,这不会产生两个图像,但 IPython 及其内联后端在单元格中创建后会显示一个图形。此外,还显示返回的图形。后来由 OUT[x] 提示指示。

要获得单个图像,只需将输出保存到某个变量(以防止其显示),例如

_ = sm.graphics.tsa.plot_acf(gen_ar2(0.75,-0.125,size=5000),lags=40)
Run Code Online (Sandbox Code Playgroud)

或抑制输出(注意;!)

sm.graphics.tsa.plot_acf(gen_ar2(0.75,-0.125,size=5000),lags=40);
Run Code Online (Sandbox Code Playgroud)

在这两种方式中,您只能获得显示的数据,而不是显示的返回数据。