首页 > 解决方案 > 在 matplotlib 中将一个动画叠加到另一个动画上

问题描述

所以我想制作两个动画并将它们放在一起。我想这样做是因为我希望两者都有不同的帧速率。如果我在 matplotlib 中使用 funcAnimation 怎么办?谢谢!

标签: pythonmatplotlibanimation

解决方案


您可以在变化最快的动画的更新函数中添加一个测试,并且只有在帧数是时间步长之间比率的倍数的情况下,才更新第二个动画。

下面的例子有一个移动的正弦波。每 10更新一个缩放的余弦函数。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig, ax = plt.subplots()

x = np.linspace(0, 6 * np.pi, 200)
line1, = ax.plot(x, np.sin(x))
line2, = ax.plot(x, np.cos(x) / 100)

def animate(i):
    line1.set_ydata(np.sin(x + i / 10.0))  # update the first part
    if i % 10 == 0:
        j = i / 10
        line2.set_ydata(np.cos(x) * j / 20)  # update the second part, only every 5 steps
    return line1, line2,

ani = animation.FuncAnimation(fig, animate, np.arange(1, 200), interval=25)
plt.show()

推荐阅读