Анимация нескольких строк на нескольких графиках с использованием анимации - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь оживить N частиц, которые взаимодействуют друг с другом под воздействием кулоновской силы.Я сделал функцию, которая рекурсивно создает каждую позицию x и y каждой частицы, а также потенциальную энергию, и добавляет их в список.Используя анимацию из matplotlib, я попытался анимировать x, y в одном субплоте и энергию в другом.Однако, когда я пытаюсь оживить оба, ему удается оживить только один подзаговор.Я довольно новичок в Python, но я изо всех сил пытаюсь найти какую-либо информацию об анимации нескольких строк в каждом подзаговоре.

Я пытался использовать только одну функцию animation () и init (), но это работало, только если яиспользовал одну частицу.Я не могу сделать это с несколькими частицами (насколько мне известно), поэтому я сделал две функции animation () и две функции init ().

fig, (ax1, ax2) = plt.subplots(1,2)

line1, = ax1.plot([], [], lw=2)
line2, = ax2.plot([], [], lw=2)

ax1.set_ylim(-1, 1)
ax1.set_xlim(-1, 1)
ax2.set_ylim(0,100)
ax2.set_xlim(0, 0.0001)

lines = [plt.plot([], [])[0] for _ in range(N)] 
lines2 = [plt.plot([], [])[0] for _ in range(N)] 

У меня есть функция, которая добавляет x, y и Epot в список, содержащий списки для всех частиц.

def init():
    for line1 in lines:
        line1.set_data([], [])
    return lines

def init2():
    for line2 in lines2:
        line2.set_data([], [])
    return lines2

def animate(i):
    for J,line1 in enumerate(lines):
        function(i,J,N) 
        line1.set_data(tijd[J], Epot[J])
    return lines

def animate2(i):
    for J,line2 in enumerate(lines2):
        function(i,J,N)
        line2.set_data(x[J], y[J])
    return lines2

Наконец, в конце кода у меня есть:

anim = animation.FuncAnimation(fig, animate, init_func=init, frames=1000, interval=20, repeat=False, blit=False)
anim2 = animation.FuncAnimation(fig, animate2, init_func=init2, frames=1000, interval=20, repeat=False, blit=False)

plt.show()

Но всякий раз, когда я выполняю это, он только оживляет anim2.Я знаю, что что-то упустил, но не могу найти правильного решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...