【问题标题】:Suppress display of final frame in matplotlib animation in jupyter在jupyter中抑制matplotlib动画中最后一帧的显示
【发布时间】:2020-08-11 18:29:33
【问题描述】:

我正在开展一个项目,该项目涉及使用 pyplot.imshow 为帧生成 matplotlib 动画。我在jupyter 笔记本中执行此操作。我已经设法让它工作了,但是还剩下一个烦人的错误(或功能?)。创建动画后,Jupyter 在输出单元格中显示动画的最后一帧。我希望输出包括以 html 格式捕获的动画,但不包括最后一帧。这是一个简单的例子:

import numpy as np
from matplotlib import animation
from IPython.display import HTML

grid = np.zeros((10,10),dtype=int)
fig1 = plt.figure(figsize=(8,8))

ax1 = fig1.add_subplot(1,1,1)
def animate(i):
    grid[i,i]=1
    ax1.imshow(grid)
    return 
ani = animation.FuncAnimation(fig1, animate,frames=10);

html = HTML(ani.to_jshtml())
display(html)

我可以使用capture magic,但这会抑制一切。这没关系,但我的最终目标是通过活页夹将其公开,并使其尽可能简单地供学生使用。

我在网上看到matplotlib 动画似乎没有这个问题,但那些使用情节,而不是imshow,这可能是一个问题。

任何建议将不胜感激。 谢谢, 大卫

【问题讨论】:

    标签: python jupyter-notebook matplotlib-animation


    【解决方案1】:

    这就是我从我在“jupyter 实验室”中寻找的同一件事中得到的答案。只需添加plt.close()

    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib import animation
    from IPython.display import HTML
    
    grid = np.zeros((10,10),dtype=int)
    fig1 = plt.figure(figsize=(8,8))
    
    ax1 = fig1.add_subplot(1,1,1)
    def animate(i):
        grid[i,i]=1
        ax1.imshow(grid)
        return 
    ani = animation.FuncAnimation(fig1, animate,frames=10);
    
    html = HTML(ani.to_jshtml())
    display(html)
    plt.close() # update
    

    【讨论】:

    • 非常感谢! plt.close() 正是我所需要的。
    猜你喜欢
    • 1970-01-01
    • 2018-10-21
    • 2023-03-10
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    • 2016-07-11
    相关资源
    最近更新 更多