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

时间:2016-04-18 03:31:30

标签: 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)

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

enter image description here

为什么这样做?我怎么能让这件事发生呢?提前谢谢。

2 个答案:

答案 0 :(得分:4)

设置inline后端,以便在每个单元格完成执行后,将显示在单元格中创建的任何matplotlib图。

您正在使用display功能显示您的图形,然后内联后端会自动再次显示该图形。

阻止此操作的最简单方法是在单元格代码的末尾添加plt.close()

答案 1 :(得分:1)

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

from statsmodels.graphics.tsaplots import plot_acf

plot_acf(daily_outflow["count"]);

cell_ends_with_semicolon