如何在显示matplotlib动画后删除Jupyter输出中的残差图?

Fal*_*art 5 python animation matplotlib ipython jupyter-notebook

我想使用Matplotlib在Jupyter中显示动画.这是一些基本的例子:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig, ax = plt.subplots()
line, = ax.plot(np.random.rand(10))
ax.set_ylim(0, 1)


def update(data):
    line.set_ydata(data)
    return line,


def data_gen():
    while True:
        yield np.random.rand(10)

ani = animation.FuncAnimation(fig, update, data_gen, interval=100);

from IPython.display import HTML
HTML(ani.to_jshtml())
Run Code Online (Sandbox Code Playgroud)

当我第一次运行代码时(或重新启动内核后),我得到了我想要的东西: 在此输入图像描述

但是,当我第二次运行相同的代码时,我会在左下角找到剩余的代码: 在此输入图像描述

我注意到当我%matplotlib inline在顶部添加时,即使在重新启动内核后我也得到了错误的输出.因此,我的猜测是%matplotlib每次创建动画时都必须将magic命令设置为默认值,但我甚至无法找到是否%matplotlib有默认值.


我用的是Anaconda.以下是我的版本:Conda版本:4.4.10 Python版本:Python 3.6.4 :: Anaconda, Inc. IPython版本:6.2.1 Jupyter版本:5.4.0

10S*_*Tom 4

在此输入图像描述

我使用 plt.close() 停止第一个(不需要的)绘图,并且没有看到在单独的单元格中运行动画的问题。我相信这个问题与评论中链接的问题类似,jupyter 会自动显示前两行不需要的图 - fig, ax = plt.subplots() line, = ax.plot(np.random.rand(10))。我厌倦了一些建议,例如在行尾使用分号和一些不同的魔术尝试,但没有乐趣。毫无疑问会出现更具体的解决方案,但现在......