Python 停止Matplotlib Jupyter笔记本显示带动画的绘图

Python 停止Matplotlib Jupyter笔记本显示带动画的绘图,python,animation,matplotlib,jupyter-notebook,Python,Animation,Matplotlib,Jupyter Notebook,问题一,我认为在jupyter笔记本中显示JavaScript动画也会显示情节: 示例代码: fig = plt.figure() ax = plt.axes(xlim=(0, 2), ylim=(-2, 2)) line, = ax.plot([], [], lw=2) def init(): line.set_data([], []) return line, def animate(i): x = np.linspace(0, 2, 1000) y =

问题一,我认为在jupyter笔记本中显示JavaScript动画也会显示情节:

示例代码:

fig = plt.figure()
ax = plt.axes(xlim=(0, 2), ylim=(-2, 2))
line, = ax.plot([], [], lw=2)

def init():
    line.set_data([], [])
    return line,

def animate(i):
    x = np.linspace(0, 2, 1000)
    y = np.sin(2 * np.pi * (x - 0.01 * i))
    line.set_data(x, y)
    return line,

anim = animation.FuncAnimation(fig, animate, init_func=init,
        frames=200, interval=20, blit=True)

HTML(anim.to_jshtml())
这是输出:

请注意,这将导致两个绘图,而不仅仅是动画

另一方面,我尝试使用以下工具运行它:

HTML(anim.to_html5_video())
但这给了我一个错误:

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
~\AppData\Local\Continuum\miniconda3\lib\site-packages\matplotlib\animation.py in __getitem__(self, name)
    169         try:
--> 170             return self.avail[name]
    171         except KeyError:

KeyError: 'ffmpeg'

During handling of the above exception, another exception occurred:

RuntimeError                              Traceback (most recent call last)
<ipython-input-30-b5253c68f7fe> in <module>()
     20         frames=200, interval=20, blit=True)
     21 
---> 22 HTML(anim.to_html5_video())

~\AppData\Local\Continuum\miniconda3\lib\site-packages\matplotlib\animation.py in to_html5_video(self, embed_limit)
   1347                 # We create a writer manually so that we can get the
   1348                 # appropriate size for the tag
-> 1349                 Writer = writers[rcParams['animation.writer']]
   1350                 writer = Writer(codec='h264',
   1351                                 bitrate=rcParams['animation.bitrate'],

~\AppData\Local\Continuum\miniconda3\lib\site-packages\matplotlib\animation.py in __getitem__(self, name)
    171         except KeyError:
    172             raise RuntimeError(
--> 173                 'Requested MovieWriter ({}) not available'.format(name))
    174 
    175 

RuntimeError: Requested MovieWriter (ffmpeg) not available
---------------------------------------------------------------------------
KeyError回溯(最近一次呼叫最后一次)
\uuu getitem\uuu中的~\AppData\Local\Continuum\miniconda3\lib\site packages\matplotlib\animation.py(self,name)
169尝试:
-->170返回self.avail[名称]
171除按键错误外:
KeyError:'ffmpeg'
在处理上述异常期间,发生了另一个异常:
运行时错误回溯(上次最近调用)
在()
20帧=200,间隔=20,blit=真)
21
--->22 HTML(动画到html5视频()
~\AppData\Local\Continuum\miniconda3\lib\site packages\matplotlib\animation.py到\u html5\u视频(自嵌入\u限制)
1347#我们手动创建一个writer,以便获得
1348#标签尺寸合适
->1349 Writer=writers[rcParams['animation.Writer']]
1350 writer=writer(编解码器=h264',
1351比特率=rcParams['animation.bitrate'],
\uuu getitem\uuu中的~\AppData\Local\Continuum\miniconda3\lib\site packages\matplotlib\animation.py(self,name)
171除按键错误外:
172引发运行时错误(
-->173“请求的电影编写器({})不可用”。格式(名称))
174
175
运行时错误:请求的MovieWriter(ffmpeg)不可用

安装ffmpeg没有帮助。

这是两个不同的问题,对吗?您可以选择捕获单元格的输出并在新单元格中显示输出


至于缺少的ffmpeg,您需要确保在您的系统上确实找到了
ffmpeg

我相信,因为笔记本是交互式的,所以您可以在不调用
plt.show
的情况下自动获得绘图。您可以调用
plt.close
手动关闭它(或更改交互模式,但您可能希望在其他情况下保留该模式)

我只需要确保正确安装了ffmpeg,就可以让HTML(anim.to_html5_video())正常工作。看起来Python就是找不到它

fig = plt.figure()
ax = plt.axes(xlim=(0, 2), ylim=(-2, 2))
line, = ax.plot([], [], lw=2)
plt.close(fig)
...