使用matplotlib绘制多个同时动画子图

时间:2019-02-27 22:10:33

标签: python matplotlib animation

我的目标是用matplotlib的模块 animation 同时绘制动画的Lissajous图形,但是我无法控制所有子图。我想使用尽可能少的代码,因此重复使用一些for循环,以便以非常整洁和快速的方式绘制任意数量的图形。到目前为止,这是我的代码:

import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation as an

fig, ax = plt.subplots(nrows=3, ncols=3)
lines = np.array([[i.plot([], []) for i in ax[j]] for j in range(len(ax))])

for i in range(len(lines)):
    for j in range(len(lines[i])):
        axnow = ax[i][j]
        axnow.set_xlim(-1, 1)
        axnow.set_ylim(-1, 1)

xdata = [[[] for i in range(3)] for j in range(3)]
ydata = [[[] for i in range(3)] for j in range(3)]


def animate(frame):
    w = 1
    for i in range(len(lines)):
        for j in range(len(lines[i])):
            xdata[i][j].append(np.cos(w * frame))
            ydata[i][j].append(np.sin(1 * frame))
            line = lines[i][j][0]
            line.set_data(xdata[i][j], ydata[i][j])
            w += 1

    return lines


an.FuncAnimation(fig, animate, blit=True, frames=np.linspace(0, 2 * np.pi, 1000), repeat=False,
interval=20)


plt.tight_layout()
plt.show()

但是,什么都没有显示,我也不知道我的错误在哪里。任何帮助表示赞赏。

0 个答案:

没有答案