【问题标题】:How do I change the interval between frames (python)?如何更改帧之间的间隔(python)?
【发布时间】:2017-05-16 12:18:05
【问题描述】:

所以我正在使用 matplotlib.animation 在 python 中制作动画,并且我希望每一帧之间的时间在每一帧上都发生变化。根据我到目前为止发现的所有内容,'interval' arg 只能是一个 int,我希望它是一个数组。 到目前为止的代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.lines import Line2D
import matplotlib.animation as animation
import time

data=np.loadtxt("coord_dump.dat")
r=(data[:,0]**2+data[:,2]**2)**0.5
distance=np.diff(r)
ti=np.abs(distance)*1e-9
tt=0

fig = plt.figure()
ax=plt.axes(xlim=(-2e16,2e16),ylim=(-1.5e16,1.5e16))
ax.set_xlabel('x(cm)')
ax.set_ylabel('y(cm)')

x1 = data[:,0]
y1 = data[:,2]
x2 = data[:,1]
y2 = data[:,3]
line1 = Line2D([], [], color='black')
line1a = Line2D([], [], color='black', marker='o', markersize=6)
line2= Line2D([], [], color='red')
line2a = Line2D([], [], color='red', marker='o', markersize=6)
ax.add_line(line1)
ax.add_line(line2)
ax.add_line(line1a)
ax.add_line(line2a)

def animate(i):

    line1.set_data(x1[:i], y1[:i])
    line1a.set_data(x1[i], y1[i])
    line2.set_data(x2[:i], y2[:i])
    line2a.set_data(x2[i], y2[i])
    lines =  [line1, line1a, line2, line2a]
    tt=ti[i]
    return lines,tt

def init():
    lines =  [line1, line1a, line2, line2a]
    for l in lines:
        l.set_data([], [])
    return lines,

ani = animation.FuncAnimation(fig,animate,frames=15000, interval=5+tt,init_func=init, blit=True)
print tt
ani.save('xy2.mp4')
plt.show()          

基本上我想要帧 i 的间隔=ti[i]。 (是的,我知道我的代码效率低下,我是 python 新手,我只是从一堆网站上蹒跚而行) 另外,如果这是不可能的,有没有一种简单的方法可以在之后编辑电影以达到相同的效果?

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    你可以更改ani.event_source.interval,像下面的代码

    def animate(i):
    
        line1.set_data(x1[:i], y1[:i])
        line1a.set_data(x1[i], y1[i])
        line2.set_data(x2[:i], y2[:i])
        line2a.set_data(x2[i], y2[i])
        lines =  [line1, line1a, line2, line2a]
        tt=ti[i]
        ani.event_source.interval = tt
        return lines,
    

    警告:它似乎与 GIF 文件不兼容。

    【讨论】:

      猜你喜欢
      • 2015-09-07
      • 1970-01-01
      • 1970-01-01
      • 2019-12-23
      • 2014-06-18
      • 1970-01-01
      • 2022-01-20
      • 2022-01-12
      • 1970-01-01
      相关资源
      最近更新 更多