为什么 Jupyter 两次显示图表?

Chu*_*uck 3 python pandas jupyter-notebook

我从 Jupiter 开始分析一些销售数据。它正在工作,但每次我绘制图表时,图表都会出现两次。我笔记本中的前两个图表是从一个班级中绘制的,对于这些图表,它不会发生(注意,Model这里指的是产品模型,而不是预测模型):

class Model:
    ...
    def plot(self):
        self.weekly_sales.plot() # a pandas Series
        self.decomposed.plot() # result of seasonal_decompose on the weekly_sales

my_model = Model('model name', sales)
%matplotlib inline
my_model.plot()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

一切看起来都不错。但随后我执行了接下来的三行:

my_model.weekly_sales.autocorr()
from stats models.graphics.tsaplots import plot_acf
plot_acf(my_model.weekly_sales)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

每个后续图出现两次,包括ARMA模型的fitplot_pacf

没什么大不了的。我正在获取我需要的信息,但这有点烦人。为什么要这样做?

更新:在分析中更进一步,我DataFrame在与 ACF 和 PACF 输出相同的 Jupyter 单元格中打印了一个,它打印了框架并且只显示了两个图表一次。我回到具有重复图表输出的其他单元格,print()在每个单元格的末尾添加一个,现在每个单元格只出现一次。

小智 7

问题/问题已经存在一段时间了。见问题 1265。到目前为止,“这似乎是由 plot_acf 函数既绘制图形又返回结果导致 IPython Notebook 再次绘制结果引起的。”

对于这个问题,有几种方法可以克服双重绘图。

1) 正如你提到的print()在 acf_plot 之后添加

2)分配输出例如 output_plt = plot_acf(my_model.weekly_sales)

3) 在行后添加分号 plot_acf(my_model.weekly_sales);

4) 如果无论如何都导入了 matplotlib,则plt.show()在同一单元格中执行 a

5) 改变%matplotlib属性。不推荐这样做,因为它会影响其他绘图