我正在尝试将动画放入 iPython 笔记本中,但没有找到解决方案。我看到一篇讨论使用交互式小部件的帖子,但我遇到了几个问题:首先,我看到的每个小部件示例都使用滑块或其他一些输入,而我只希望动画在单元格时自动运行运行。其次,Jupyter 网站上的所有文档似乎都已过时——每当我下载并运行他们的笔记本时,我都会收到有关某些模块被弃用的消息,然后在文件中的某些内容无法运行,大概是因为他们正在尝试导入和访问不再存在的文件。
我看过关于该主题的其他一些页面,但它们通常需要下载二进制文件或其他模块,但我部分地使用它来教一些学生数学,我已经让他们下载 Anaconda——我希望不要再进一步了通过让他们同时下载和安装更复杂的东西,同时花时间不谈论数学来混淆问题。
所以简而言之,有没有一种方法可以让我在 iPython 笔记本中创建动画,只需要使用简单的导入命令,这些命令将开箱即用,可以说是来自 Anaconda 的软件?
[编辑:我还应该指出,我已经使用 Tkinter 制作动画,而且我确信我可以在 matplotlib 中制作一个。因此,如果有一种方法可以让你制作的动画在 iPython notebook 中呈现,那对我来说肯定是一个可行的解决方案。]
[进一步编辑:我想我也可以说出我现在希望制作动画的内容,尽管如果我决定的话,我真的想对我可以制作动画的东西的范围非常灵活。现在我正在尝试制作一个数字时钟,它以苏美尔 base-60 数字显示每个数字,以说明不同的计数和基本系统。所以它应该最初显示 |然后在一秒钟后 ||依此类推,直到十被表示为 < 等等,直到最终时钟滴答到一分钟,现在显示 |:|代表一分一秒。]
[未来人类请注意:如果您正在实现一些动画并愿意公开托管它,请在评论中留下指向它的链接!我很好奇现在人们是如何制作动画的,也很好奇他们在制作什么动画。]
原文由 Addem 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 Jupyter/IPython 中使用 matplotlib 动画绘图的一些选项:
display
使用IPython.display.display(fig)
使用 --- 在输出中显示图形。使用循环,您可能希望在显示新图形之前清除输出。请注意,此技术通常不会提供那么平滑的结果。因此,我建议使用以下任何一种。%matplotlib notebook
使用 IPython magic%matplotlib notebook
将后端设置为笔记本后端。这将使图形保持活动状态而不是显示静态 png 文件,因此也可以显示动画。完整示例:
%matplotlib tk
使用IPython魔法%matplotlib tk
将后端设置为tk后端。这将在一个新的绘图窗口中打开图形,该窗口是交互式的,因此也可以显示动画。完整示例:
或者在笔记本的开头使用
plt.rcParams["animation.html"] = "html5"
。这需要有 ffmpeg 视频编解码器才能转换为 HTML5 视频。然后视频以内嵌方式显示。因此,这与%matplotlib inline
后端兼容。完整示例:或者在笔记本的开头使用
plt.rcParams["animation.html"] = "jshtml"
。这会将动画显示为带有 JavaScript 的 HTML。这与大多数新浏览器以及%matplotlib inline
后端高度兼容。它在 matplotlib 2.1 或更高版本中可用。完整示例: