我有一个生成一系列时间依赖图的脚本。我想把它们“缝合”在一起制作一部电影。
我最好使用matplotlib.animation。我查看了matplotlib文档中的示例,但我无法理解它是如何工作的。
我的脚本目前在连续的时间值上绘制了20个图,并将这些图保存为00001.png,最多为000020.png:
from scipy.integrate import odeint
from numpy import *
from math import cos
import pylab
omega=1.4
delta=0.1
F=0.35
def f(initial,t):
x,v=initial
xdot=v
vdot=x-x**3-delta*v-F*cos(omega*t)
return array([xdot,vdot])
T=2*pi/omega
nperiods = 100
totalsteps= 1000
small=int((totalsteps)/nperiods)
ntransients= 10
initial=[-1,0]
kArray= linspace(0,1,20)
for g in range (0,20):
k=kArray[g]
x,v=initial
xpc=[]
vpc=[]
if k==0:
x,v=x,v
else:
for i in range(1,nperiods)
x,v=odeint(f,[x,v],linspace(0,k*T,small))[-1] )
for i in range (1,nperiods):
x,v=odeint(f,[x,v],linspace(k*T,T+k*T,small))[-1]
xpc.append(x)
vpc.append(v)
xpc=xpc[ntransients:]
vpc=vpc[ntransients:]
pylab.figure(17.8,10)
pylab.scatter(xpc,vpc,color='red',s=0.2)
pylab.ylim([-1.5,1.5])
pylab.xlim([-2,2])
pylab.savefig('0000{0}.png'.format(g), dpi=200)
我很感激任何帮助。谢谢。
答案 0 :(得分:1)
我认为matplotlib.animation.FuncAnimation
正是您所寻找的。基本上,它反复调用已定义的函数,根据需要传入(可选)参数。这正是您在for g in range(0,20):
代码中所做的。您还可以定义init函数以设置内容。查看基类matplotlib.animation.Animation
,了解有关格式,保存,MovieWriter
类等的更多信息。