Я пытаюсь построить несколько линий на одном графике и анимировать их. Я могу получить по одной строке за раз, но на следующем кадре предыдущая строка удаляется и появляется новая. Как изменить приведенный ниже код, чтобы сохранить все предыдущие строки на графике, пока добавляются следующие? Последняя переменная в приведенном ниже коде - это то, что график должен показать в конце анимации.
import matplotlib.pyplot as plt
from matplotlib import animation
import numpy as np
frame_num = 500
N = 1 # number of lines
fig = plt.figure()
ax1 = plt.axes(xlim=(-1.5, 1.5), ylim=(-1.5, 1.5))
line = ax1.plot([], [], lw=1)
ax1.set_aspect("equal")
ax1.set_facecolor((0, 0, 0))
plt.xticks([])
plt.yticks([])
lines = [plt.plot([], [], 'w-')[0] for _ in range(N)] # lines to animate
# init lines
def init():
for line in lines:
line.set_data([], [])
return lines
r1 = 1
r2 = 0.75
t1 = np.linspace(0, 4*np.pi, frame_num+1)
t2 = np.linspace(0, 14*np.pi, frame_num+1)
const = 1
xlist = [r1*np.cos(t1), r2*np.cos(t2*const)]
ylist = [r1*np.sin(t1), r2*np.sin(t2*const)]
x1, x2, y1, y2 = [], [], [], []
data = (xlist, ylist)
# final = plt.plot(xlist, ylist, 'b-')
# animate lines
def animate(i):
x1 = xlist[0][i]
y1 = ylist[0][i]
x2 = xlist[1][i]
y2 = ylist[1][i]
for j, line in enumerate(lines):
line.set_data([x1, x2], [y1, y2])
return lines
anim = animation.FuncAnimation(fig,
animate,
init_func=init,
frames=frame_num,
interval=10,
blit=True,
repeat=False)
plt.show()