[英]Display animation outside of jupyter notebook
我想使用Jupyter笔记本来托管演示文稿的代码,但我不想将动画嵌入到笔记本中。 (因为嵌入视频非常耗时。)我想运行单元格并弹出一个屏幕,就像在终端中运行代码一样。
from matplotlib.animation import FuncAnimation
from matplotlib.pyplot import plot, show, subplots, title # annotate
from IPython.display import HTML
anim = FuncAnimation(fig, update, frames=numlin, interval=100, fargs=(
d, g, lr_D, lr_G, hasFake, speed, show_sample),
init_func=init, blit=True, repeat=0)
HTML(anim.to_html5_video())
为什么要使用笔记本? 使用笔记本电脑的主要原因是我有许多用于实验的不同设置。 我想使用不同的单元格来代表不同的配置,如果人们想查看特定配置的结果,则可以立即运行它。
时差 。 HTML函数需要一分钟以上的时间来生成我需要的视频。 在终端中时,动画将开始。 我想在会议期间快速制作原型,而听众要求显示不同初始条件下的结果。
笔记本计算机还有意外行为 。 笔记本中的视频与终端中弹出的视频不同。 笔记本中的视频在绘制时不会删除现有的帧,从而使动画看起来很凌乱,无法跟踪其轨迹。
这种绘画行为是我不想使用笔记本显示动画的另一个原因。
笔记本需要显示其他图吗? 我希望如此,但这不是必需的。 如果需要,我可以打开另一个笔记本仅用于绘图。
如果我不好解释,请告诉我。
阅读问题,我想知道您是否知道%matplotlib notebook
后端。 虽然它将在笔记本中显示动画,但我认为它可以满足所有描述的需求。
%matplotlib notebook
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import numpy as np
a = np.random.rand(10,4)
fig, ax =plt.subplots()
ax.axis([0,1,0,1])
points1, = plt.plot([],[], ls="", marker="d", color="indigo")
points2, = plt.plot([],[], ls="", marker="o", color="crimson")
def update(i):
points1.set_data(a[i:i+2,0],a[i:i+2,1])
points2.set_data(a[i:i+2,2],a[i:i+2,3])
return points1, points2
anim = FuncAnimation(fig, update, frames=len(a)-1, repeat=True)
请注意,使用这种动画(其中用set_data
更新数据)无论是保存到视频还是在屏幕上显示都相同。 因此,如果没有时间替换视频,则可以按照最初显示的方式使用它,删除%matplotlib notebook
并添加
from IPython.display import HTML
HTML(anim.to_html5_video())
如果使用matplotlib 2.1,您还可以选择JavaScript动画,
from IPython.display import HTML
HTML(ani.to_jshtml())
如果要显示一个窗口,则既不应使用%matplotlib inline
也不应该使用%matplotlib notebook
,而应将上面代码中的第一行替换为
%matplotlib tk
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.