我的目标是用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()
但是,什么都没有显示,我也不知道我的错误在哪里。任何帮助表示赞赏。