动画未在 Jupyter 笔记本中运行

Posted

技术标签:

【中文标题】动画未在 Jupyter 笔记本中运行【英文标题】:Animation not running in Jupiter notebook 【发布时间】:2021-07-02 04:54:17 【问题描述】:

我有一些在 Spyder 中运行的代码,但是当我尝试在 Jupiter 笔记本中运行它时它不起作用(我尝试将 %matplot lib 放在单元格的顶部,但我只是收到以下错误: AttributeError: 'NoneType' 对象没有属性 'lower') 这是代码:

import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import animation
def randrange(n, vmin, vmax):
   return (vmax - vmin) * np.random.rand(n) + vmin
n = 100
xx = randrange(n, 23, 32)
yy = randrange(n, 0, 100)
zz = randrange(n, -50, -25)
fig = plt.figure()
ax = Axes3D(fig)


def init():
    ax.scatter(xx, yy, zz, marker='o', s=20, c="goldenrod", alpha=0.6)
    return fig,

def animate(i):
    ax.view_init(elev=10., azim=i)
    return fig,

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

有什么想法吗?

【问题讨论】:

【参考方案1】:

Jupiter 环境不具备渲染动画的能力,所以似乎使用了 html 视频功能。我是 jupyterLab,我总是用这个来运行。

import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import animation
from IPython.display import HTML # updated

def randrange(n, vmin, vmax):
    return (vmax - vmin) * np.random.rand(n) + vmin

n = 100
xx = randrange(n, 23, 32)
yy = randrange(n, 0, 100)
zz = randrange(n, -50, -25)
fig = plt.figure()
ax = Axes3D(fig)


def init():
    ax.scatter(xx, yy, zz, marker='o', s=20, c="goldenrod", alpha=0.6)
    return fig,

def animate(i):
    ax.view_init(elev=10., azim=i)
    return fig,

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

plt.close() # updated
HTML(anim.to_html5_video()) # updated

【讨论】:

你是否安装了一些东西来避免这个错误:RuntimeError: Requested MovieWriter (ffmpeg) not available 要创建 GIF 图像,我使用以下内容。 from matplotlib.animation import PillowWriter; anim.save('file_name.gif', writer='pillow')我也在ffmpeg中使用这个设置来播放视频。anim.save('file_name.mp4', writer='ffmpeg', fps=30) 可以找到ffmpeg安装here. 干杯不安装它,所以没有它肯定没有办法让动画运行?我认为这与单元格自动设置为内联这一事实有关,但不确定对于具有移动动画的单元格而言,“内联”的等价物是什么。 ffmpeg 用于将动画另存为视频。动画不需要它。最后一个代码是将创建的动画显示为 HTML5 中的视频。

以上是关于动画未在 Jupyter 笔记本中运行的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 google colab 在 jupyter notebook 中显示 GIF?

在 Jupyter 中使用 plotly 在离线模式下创建动画图表

如何显示我的 Jupyter 笔记本版本并在 Jupyter 笔记本中运行单元格?我收到一个错误:错误的解释器

如何在从 docker 容器运行的 jupyter 笔记本中获取黑色代码格式?

如何在 Jupyter 笔记本中运行 Python asyncio 代码?

没有运行python 3的Jupyter笔记本