在 jupyter 的 matplotlib 动画中抑制最后一帧的显示
Suppress display of final frame in matplotlib animation in jupyter
我正在开展一个项目,该项目涉及使用 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
,但这会抑制一切。这样可以,但我的最终目标是通过活页夹制作这个 public,并尽可能简单地让学生使用。
我在网上看过matplotlib
个动画好像没有这个问题,但是那些用的是情节,而不是imshow
,这可能是个问题。
如有任何建议,我们将不胜感激。
谢谢,
大卫
这就是我在 'jupyter lab' 中寻找的同一件事的答案。只需添加 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
我正在开展一个项目,该项目涉及使用 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
,但这会抑制一切。这样可以,但我的最终目标是通过活页夹制作这个 public,并尽可能简单地让学生使用。
我在网上看过matplotlib
个动画好像没有这个问题,但是那些用的是情节,而不是imshow
,这可能是个问题。
如有任何建议,我们将不胜感激。 谢谢, 大卫
这就是我在 'jupyter lab' 中寻找的同一件事的答案。只需添加 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