- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试将动画放入 iPython 笔记本中,但没有找到解决方案。我看到一篇讨论使用交互式小部件的帖子,但是我遇到了几个问题:首先,我看到的小部件的每个示例都使用 slider 或其他一些输入,而我只希望动画在单元格时自动运行正在运行。其次,Jupyter 网站上的所有文档似乎都已过时——每当我下载并运行他们的笔记本时,我都会收到有关某些模块已弃用的消息,然后文件中的某些内容无法运行,大概是因为他们正在尝试导入和运行访问不再存在的文件。
我看过有关该主题的其他一些页面,但它们通常需要下载二进制文件或其他模块,但我部分使用它来教一些学生数学,并且我已经让他们下载 Anaconda - 我希望为了不让他们下载和安装更复杂的东西,同时花时间不谈论数学,从而进一步混淆问题。
简而言之,有没有一种方法可以让我在 iPython 笔记本中创建动画,只需要使用简单的导入命令,这些命令就可以开箱即用地运行,可以用来自 Anaconda 的软件来说话?
[编辑:我还应该注意,我已经使用 Tkinter 制作动画,并且我确信我可以在 matplotlib 中制作动画。因此,如果有一种方法可以让您制作的动画在 iPython 笔记本中渲染,那对我来说肯定是一个可行的解决方案。]
[进一步编辑:我想我也可以说出我现在希望制作动画的内容,尽管我真的希望在我决定的情况下可以对可以制作动画的事物范围保持相当的灵 active 。现在我正在尝试制作一个数字时钟,以苏美尔 60 进制数字显示每个数字,以说明不同的计数和基本系统。所以它最初应该显示 |然后一秒钟后||依此类推,直到 10 被表示为 < 等等,直到最终时钟滴答作响到一分钟,现在显示 |:|代表一分钟,一秒。]
[ future 人类请注意:如果您正在实现一些动画并愿意公开托管它,请在评论中留下指向它的链接!我很好奇现在人们如何制作动画,也有点好奇他们在制作什么动画。]
最佳答案
使用 matplotlib 在 Jupyter/IPython 中制作动画绘图的一些选项:
在循环中使用 display
使用 IPython.display.display(fig)
在输出中显示图形。使用循环,您可能希望在显示新图形之前清除输出。请注意,这种技术通常给出的结果不太平滑。因此,我建议使用以下任何一种。
import matplotlib.pyplot as plt
import matplotlib.animation
import numpy as np
from IPython.display import display, clear_output
t = np.linspace(0,2*np.pi)
x = np.sin(t)
fig, ax = plt.subplots()
l, = ax.plot([0,2*np.pi],[-1,1])
animate = lambda i: l.set_data(t[:i], x[:i])
for i in range(len(x)):
animate(i)
clear_output(wait=True)
display(fig)
plt.show()
%matplotlib Notebook
使用 IPython magic %matplotlib Notebook
将后端设置为 Notebook 后端。这将使图形保持事件状态,而不是显示静态 png 文件,因此也可以显示动画。
完整示例:
%matplotlib notebook
import matplotlib.pyplot as plt
import matplotlib.animation
import numpy as np
t = np.linspace(0,2*np.pi)
x = np.sin(t)
fig, ax = plt.subplots()
l, = ax.plot([0,2*np.pi],[-1,1])
animate = lambda i: l.set_data(t[:i], x[:i])
ani = matplotlib.animation.FuncAnimation(fig, animate, frames=len(t))
plt.show()
%matplotlib tk
使用 IPython magic %matplotlib tk
将后端设置为 tk 后端。这将在新的绘图窗口中打开图形,该窗口是交互式的,因此也可以显示动画。
完整示例:
%matplotlib tk
import matplotlib.pyplot as plt
import matplotlib.animation
import numpy as np
t = np.linspace(0,2*np.pi)
x = np.sin(t)
fig, ax = plt.subplots()
l, = ax.plot([0,2*np.pi],[-1,1])
animate = lambda i: l.set_data(t[:i], x[:i])
ani = matplotlib.animation.FuncAnimation(fig, animate, frames=len(t))
plt.show()
将动画转换为 mp4 视频(@Perfi 已经提到的选项):
from IPython.display import HTML
HTML(ani.to_html5_video())
或在笔记本的开头使用plt.rcParams["animation.html"] = "html5"
。这将需要 ffmpeg 视频编解码器可用于转换为 HTML5 视频。然后视频会内联显示。因此,这与 %matplotlib inline
后端兼容。完整示例:
%matplotlib inline
import matplotlib.pyplot as plt
plt.rcParams["animation.html"] = "html5"
import matplotlib.animation
import numpy as np
t = np.linspace(0,2*np.pi)
x = np.sin(t)
fig, ax = plt.subplots()
l, = ax.plot([0,2*np.pi],[-1,1])
animate = lambda i: l.set_data(t[:i], x[:i])
ani = matplotlib.animation.FuncAnimation(fig, animate, frames=len(t))
ani
%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib.animation
import numpy as np
t = np.linspace(0,2*np.pi)
x = np.sin(t)
fig, ax = plt.subplots()
l, = ax.plot([0,2*np.pi],[-1,1])
animate = lambda i: l.set_data(t[:i], x[:i])
ani = matplotlib.animation.FuncAnimation(fig, animate, frames=len(t))
from IPython.display import HTML
HTML(ani.to_html5_video())
将动画转换为 JavaScript:
from IPython.display import HTML
HTML(ani.to_jshtml())
或在笔记本的开头使用plt.rcParams["animation.html"] = "jshtml"
。这将使用 JavaScript 将动画显示为 HTML。这与大多数新浏览器以及 %matplotlib inline
后端高度兼容。它在 matplotlib 2.1 或更高版本中可用。
完整示例:
%matplotlib inline
import matplotlib.pyplot as plt
plt.rcParams["animation.html"] = "jshtml"
import matplotlib.animation
import numpy as np
t = np.linspace(0,2*np.pi)
x = np.sin(t)
fig, ax = plt.subplots()
l, = ax.plot([0,2*np.pi],[-1,1])
animate = lambda i: l.set_data(t[:i], x[:i])
ani = matplotlib.animation.FuncAnimation(fig, animate, frames=len(t))
ani
%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib.animation
import numpy as np
t = np.linspace(0,2*np.pi)
x = np.sin(t)
fig, ax = plt.subplots()
l, = ax.plot([0,2*np.pi],[-1,1])
animate = lambda i: l.set_data(t[:i], x[:i])
ani = matplotlib.animation.FuncAnimation(fig, animate, frames=len(t))
from IPython.display import HTML
HTML(ani.to_jshtml())
关于python-3.x - iPython 笔记本中的动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55366441/
问题:将具有两个字符分隔符的数据文件加载到 Azure SQL Db 时,我们遇到以下错误。我们可能做错了什么以及如何解决这个问题? 在 Azure Databricks 中使用 Python 笔记本
我正在使用 ipython notebook 迈出第一步,我成功地将它安装在我的远程服务器上(通过 SSH),并使用以下命令启动它: ipython notebook --ip='*' ---pyla
我想知道对于一个网站来说,最好的数据库设计是什么,让用户(假设有 10k 个用户)给自己留下带有日期的注释。用户只能看到自己的笔记。 用户将看到的示例: 2014年9月28日 -去商店 -带狗去散步
我希望没有人会认为这个问题离题。我即将开始探索在 Jupyter 笔记本中使用 C# 内核。我看到有几种选择,有些似乎过时了。我对探索它们并不真正感兴趣,我只是想要一些能够很好地用于演示的东西。目的是
我已经使用此命令在 R 控制台中安装了 Rcpp,该命令直到现在通常用于安装要在 jupyter 笔记本上运行的软件包: install.packages('Rcpp', '/home/user/an
我已经使用更新了 Tornado sudo pip install --upgrade tornado 检查当前版本显示我已经有一个 4.0 以后的版本 找到命令的输出: pip 显示 Tornado
这个问题在这里已经有了答案: How can I share Jupyter notebooks with non-programmers? [closed] (6 个回答) 5年前关闭。 我安装了一
我有一个 IPython 笔记本,我不小心丢弃了一个巨大的输出 (15 MB),导致笔记本崩溃。现在,当我打开笔记本并尝试删除有问题的单元格时,笔记本又崩溃了——从而阻止了我解决问题并将笔记本恢复到稳
当我使用 ipython 笔记本(Windows 版本)运行任何 %R 代码时,输出在结果之前包含一个 480 x 480 的空白图像。我已经申请了fix #2433让 rmagic 在 Wind
大家好,我想使用新的.NET Jupyter笔记本,因此我准备了一个gitt的存储库,其中包含dockerfile(是正确的)和NuGet.config文件,例如: here the tuto 一切都
如何将本地镜像添加到 IJulia 笔记本?该图像与 IPYNB 文件位于同一本地网络文件夹中。该文件夹可通过符号链接(symbolic link)访问。我尝试过相对文件名和绝对文件名。 ![Ima
docs描述如何创建密码来保护您的 jupyter 笔记本。我希望能够创建并共享一个特定的笔记本,并为该笔记本设置特殊的密码。这可能吗? 最佳答案 不,这是不可能的。该密码保护整个 Jupyter 服
最近我了解到,使用 python 可以生成 IPython 笔记本 automatically .这看起来是个很酷的功能,我想用它来自动生成报告。但是用 julia 而不是 python。那么是否有一
我正在使用 Jupyter 笔记本,并且需要运行另一个 Jupyter 笔记本。这通常使用 %run 很简单,但另一个笔记本的路径是相对的并且包含空格。 这会产生以下错误: %run '..//../
我想在一个循环中运行完整的 Jupyter 笔记本,为笔记本的每次运行传递不同的参数。我可以使用插件传递参数,如下所述:Passing command line arguments to argv i
我真的很感谢这里的一些帮助,基本上我正在学习使用tensorflow,我决定最简单的方法是在VMware和/或Virtualbox上安装ubuntu,然后访问ipython笔记本(anaconda附带
有谁知道在执行单元格之前是否有选项(或建议的 hack)可以让 IPython 笔记本自动保存? 很多时候我一直在做一些事情而没有保存很长一段时间,然后我执行了一个愚蠢的命令,该命令在控制台上打印了如
我正在尝试在另一个文件中运行 .ipynb 文件。我想嵌套这两个的原因是因为在其中一个中,我安装了所有 conda 软件包、github 存储库,并且我不想为我将暂时使用的演示文件重做整个事情。我使用
我有多个相互链接的 Jupyter 笔记本,例如 Notebook1.ipydb 包含指向 Notebook2.ipydb 的链接,其 Markdown [Notebook2](Notebook2.i
我使用 jupyter python 中的 matplotlib 库生成了下图。正如你所看到的,我有两个不同的数据,一个是红色,另一个是绿色。我的问题是,有什么办法可以让我有一个小侧窗来说明每种颜色的
我是一名优秀的程序员,十分优秀!