Why is Jupyter Notebook creating duplicate plots when making updating plots

自作多情 提交于 2021-02-18 22:43:31

问题


I'm trying to make plots in a Jupyter Notebook that update every second or so. Right now, I just have a simple code which is working:

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

Which updated the plots I have created every second. However, at the end, there is an extra copy of the plots:

Why is it doing this? And how can I make this not happen? Thank you in advance.


回答1:


The inline backend is set-up so that when each cell is finished executing, any matplotlib plot created in the cell will be displayed.

You are displaying your figure once using the display function, and then the figure is being displayed again automatically by the inline backend.

The easiest way to prevent this is to add plt.close() at the end of the code in your cell.



来源:https://stackoverflow.com/questions/36685031/why-is-jupyter-notebook-creating-duplicate-plots-when-making-updating-plots

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!