【问题标题】:Why is Jupyter Notebook creating duplicate plots when making updating plots为什么 Jupyter Notebook 在更新绘图时会创建重复的绘图
【发布时间】:2016-08-09 15:54:26
【问题描述】:

我正在尝试在 Jupyter Notebook 中制作每秒钟左右更新一次的绘图。现在,我只有一个正在运行的简单代码:

%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)

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

为什么要这样做?我怎样才能让这不会发生?提前谢谢你。

【问题讨论】:

标签: python matplotlib ipython jupyter-notebook


【解决方案1】:

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

您使用display 函数显示您的图形一次,然后内联后端会自动再次显示图形。

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

【讨论】:

    【解决方案2】:

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

    from statsmodels.graphics.tsaplots import plot_acf
    
    plot_acf(daily_outflow["count"]);
    

    【讨论】:

    • 此解决方案适用于带有 Pycharm 的 Jupyter Notebook
    猜你喜欢
    • 2019-03-22
    • 2021-10-25
    • 1970-01-01
    • 2016-08-05
    • 2018-10-28
    • 2021-02-23
    • 2019-11-14
    • 2016-10-10
    • 1970-01-01
    相关资源
    最近更新 更多