是否有创建动画图形的方式。 例如示出了相同的曲线图,具有不同的参数。
例如是SAGE笔记本电脑,一个可以这样写:
a = animate([circle((i,i), 1-1/(i+1), hue=i/10) for i in srange(0,2,0.2)],
xmin=0,ymin=0,xmax=2,ymax=2,figsize=[2,2])
a.show()
是否有创建动画图形的方式。 例如示出了相同的曲线图,具有不同的参数。
例如是SAGE笔记本电脑,一个可以这样写:
a = animate([circle((i,i), 1-1/(i+1), hue=i/10) for i in srange(0,2,0.2)],
xmin=0,ymin=0,xmax=2,ymax=2,figsize=[2,2])
a.show()
更新日期:2014年1月
杰克Vanderplas创造了一个基于JavaScript的包可用matplotlib动画这里 。 使用它很简单:
# https://github.com/jakevdp/JSAnimation
from JSAnimation import examples
examples.basic_animation()
见他的博客文章更完整的说明和例子。 历史的答案(见修正goger)
是的,JavaScript的更新不正确把握图像帧还,所以存在闪烁,但是你可以用这种技术做一些非常简单:
import time, sys
from IPython.display import clear_output
f, ax = plt.subplots()
for i in range(10):
y = i/10*sin(x)
ax.plot(x,y)
time.sleep(0.5)
clear_output()
display(f)
ax.cla() # turn this off if you'd like to "build up" plots
plt.close()
这有可怕的闪烁,但至少这将创建动画对我的阴谋。 它是基于阿隆,但阿隆不起作用原样。
import time, sys
from IPython.core.display import clear_output
f, ax = plt.subplots()
n = 30
x = array([i/10.0 for i in range(n)])
y = array([sin(i) for i in x])
for i in range(5,n):
ax.plot(x[:i],y[:i])
time.sleep(0.1)
clear_output()
display(f)
ax.cla() # turn this off if you'd like to "build up" plots
plt.close()
如果您使用IPython的笔记本电脑,2.0及以上版本支持各种交互式小部件 。 你可以找到一个很好的例子,笔记本电脑在这里 (注:您需要下载并从自己的机器上运行,看看滑块)。
它本质归结为进口interact
,然后通过它的功能,具有对paramters范围一起。 例如,从第二连杆:
In [8]:
def pltsin(f, a):
plot(x,a*sin(2*pi*x*f))
ylim(-10,10)
In [9]:
interact(pltsin, f=(1,10,0.1), a=(1,10,1));
这将产生一个情节有两个滑块,为f
和a
。
IPython的小工具让你操纵与笔记本GUI对象内核Python对象。 你可能还喜欢鼠尾草托管IPython的笔记本电脑 。 你可能有与笔记本电脑共享部件或交互的一个问题是,如果别人没有IPython中,他们无法运行您的工作。 为了解决这个问题,你可以使用多米诺共享笔记本电脑与其他人可以运行的小部件。
以下是你可以用熊猫来过滤数据,分形在笔记本电脑打造的小部件的三个例子,以及3D绘图的滑块。 了解详情并查看代码和笔记本电脑在这里 。
如果你想生活流数据或设置模拟为一个循环运行,也可以流数据到一个笔记本中地块。 声明:我Plotly工作。
bqplot现在做这一个很好的选择。 它在笔记本电脑专门打造的动画通过蟒蛇
https://github.com/bloomberg/bqplot
如果你想3D散点图动画,在Ipyvolume Jupyter小部件是非常可观的。 http://ipyvolume.readthedocs.io/en/latest/animation.html#
在“可怕的闪烁”的@ goger的评论,我发现打电话clear_output(等待= TRUE)解决我的问题。 该标志告诉clear_output等待渲染,直到有新的东西呈现。
matplotlib
有一个animation
模块,以做到这一点。 然而,只要在网站上的例子将无法运行的是在笔记本上; 你需要做一些调整,使其工作。
这里是页面的下面的例子修改在笔记本上工作( 粗体修改)。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
from matplotlib import rc
from IPython.display import HTML
fig, ax = plt.subplots()
xdata, ydata = [], []
ln, = plt.plot([], [], 'ro', animated=True)
def init():
ax.set_xlim(0, 2*np.pi)
ax.set_ylim(-1, 1)
return ln,
def update(frame):
xdata.append(frame)
ydata.append(np.sin(frame))
ln.set_data(xdata, ydata)
return ln,
ani = FuncAnimation(fig, update, frames=np.linspace(0, 2*np.pi, 128),
init_func=init, blit=True)
rc('animation', html='html5')
ani
# plt.show() # not needed anymore
需要注意的是在笔记本电脑动画通过电影制作以及您需要安装的ffmpeg和matplotlib配置为使用它。