如何使用matplotlib在同一图上绘制多个动画函数?

Mus*_*Asz 4 python matplotlib

我想在同一个图上绘制两个动画函数以比较两个函数,例如 exp(-x 2) 和 exp(x 2) 我知道如何为函数设置动画,这是我用来为函数设置动画的代码

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
%matplotlib qt
fig, ax = plt.subplots()
xdata, ydata = [], []
ln, = plt.plot([], [], 'r', animated=True)
f = np.linspace(-3, 3, 200)
def init():
    ax.set_xlim(-3, 3)
    ax.set_ylim(-0.25, 2)
    ln.set_data(xdata,ydata)
    return ln,
def update(frame):
    xdata.append(frame)
    ydata.append(np.exp(-frame**2))
    ln.set_data(xdata, ydata)
    return ln,
ani = FuncAnimation(fig, update, frames=f,enter code here
                    init_func=init, blit=True, interval = 2.5,repeat=False)
plt.show()



enter code here
Run Code Online (Sandbox Code Playgroud)

并且通过相同的方法我们可以绘制另一个函数但是我们如何在同一个图上显示它们

mic*_*18l 6

如评论中所述,添加另一行将起作用。这是一个使用 exp(-x^2) 和 exp(x^2) 的工作示例,我还更改了限制以更好地查看两者:

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


fig, ax = plt.subplots()
xdata, ydata0, ydata1 = [], [], []
ln0, = plt.plot([], [], 'r', animated=True)
ln1, = plt.plot([], [], 'b', animated=True)
f = np.linspace(-3, 3, 200)

def init():
    ax.set_xlim(-3, 3)
    ax.set_ylim(-0.25, 10)
    ln0.set_data(xdata,ydata0)
    ln1.set_data(xdata,ydata1)
    return ln0, ln1

def update(frame):
    xdata.append(frame)
    ydata0.append(np.exp(-frame**2))
    ydata1.append(np.exp(frame**2))
    ln0.set_data(xdata, ydata0)
    ln1.set_data(xdata, ydata1)
    return ln0, ln1,

ani = FuncAnimation(fig, update, frames=f,
                    init_func=init, blit=True, interval=2.5, repeat=False)
plt.show()
Run Code Online (Sandbox Code Playgroud)

对于下面的 gif,我将plt.show()行ani.save('animated_exp.gif', writer='imagemagick')更改为 并将间隔更改为 25。

使用示例代码创建的 gif