Анимация сюжета, который повторяется по нескольким строкам - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь построить несколько линий на одном графике и анимировать их. Я могу получить по одной строке за раз, но на следующем кадре предыдущая строка удаляется и появляется новая. Как изменить приведенный ниже код, чтобы сохранить все предыдущие строки на графике, пока добавляются следующие? Последняя переменная в приведенном ниже коде - это то, что график должен показать в конце анимации.

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...