为什么Jupyter Notebook在制作更新图时会创建重复的图

The*_*ark 6 python matplotlib ipython jupyter-notebook

我正试图在Jupyter笔记本中制作每秒钟更新一次的情节.现在,我只有一个简单的代码正在工作:

%matplotlib inline
import time
import pylab as plt
import numpy as np
from IPython import display

for i in range(10):
    plt.close()
    a = np.random.randint(100,size=100)
    b = np.random.randint(100,size=100)

    fig, ax = plt.subplots(2,1)
    ax[0].plot(a)
    ax[0].set_title('A')
    ax[1].plot(b)
    ax[1].set_title('B')

    display.clear_output(wait=True)
    display.display(plt.gcf())
    time.sleep(1.0)
Run Code Online (Sandbox Code Playgroud)

这更新了我每秒创建的图表.但是,最后,还有一个额外的图表副本:

在此输入图像描述

它为什么这样做?我怎么能让这件事发生呢?先感谢您.

jak*_*vdp 7

inline后端上设定好,以便当每个小区被执行完毕,在细胞中产生的任何matplotlib图将被显示。

使用该display功能一次显示图形,然后内联后端自动再次显示图形。

防止这种情况的最简单方法是plt.close()在单元格中的代码末尾添加。


bag*_*nte 7

另一种选择是;在行尾添加!statsmodels我在绘制时间序列自相关的方法中遇到了同样的问题( statsmodels.graphics.tsaplot.plot_acf()):

from statsmodels.graphics.tsaplots import plot_acf

plot_acf(daily_outflow["count"]);
Run Code Online (Sandbox Code Playgroud)

单元格以分号结尾