Как я могу показать два анимированных сюжета, используя matplotlib - PullRequest
0 голосов
/ 31 марта 2019

Я бы хотел оживить два разных сюжета с помощью matplotlib в python, но все идет не очень хорошо.

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

Я подумал, что мне нужно создать две анимации и представить вспомогательные сюжеты:

fig, axs = plt.subplots(1,2)
animation1 = FuncAnimation(fig, self.animate_first, numframes, repeat = False, interval = 10, blit = True)
animation2 = FuncAnimation(fig, self.animate_linegraph, numframes, repeat = False, interval = 10, blit = True)

но если subplots возвращает объект с одной фигурой, и это первый параметр FuncAnimation, что должны делать функции обратного вызова animate? Когда у меня был только один график, я возвращал список патчей из функции animate. Но когда у меня есть два графика для обновления. Я не уверен, что делать.

Любые указатели очень ценятся. О (и в случае, если это не было очевидно :)), я совершенно новичок в Python.

Спасибо, Пол

1 Ответ

0 голосов
/ 31 марта 2019

В прошлом я достигал анимации в сюжете по следующим направлениям:

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

# Set up formatting for the movie files
Writer = animation.writers['ffmpeg']
writer = Writer(fps=15, metadata=dict(artist='Me'), bitrate=1800)

# initialization function: plot the background of each frame
def init():
    fig = plt.figure()
    ax2 = fig.add_subplot(2, 1, 1)
    ax3 = fig.add_subplot(2, 1, 2)
    title = plt.title('')
    title.set_text('')
    return fig,ax2,ax3,title

# animation function.  This is called sequentially
def animate(i):

    a = ax2.pcolor(x,y,data)

    b = ax3.pcolor(x2,y2,data2)

    main_title.set_text('Main Title')
    title2.set_text('Sub title 1')
    title3.set_text('Sub title 2')

    return main_title, title2, title3, ax2, ax3

# call the animator.
fig = plt.figure()
ax2 = fig.add_subplot(2, 1, 1)
ax3 = fig.add_subplot(2, 1, 2)
title2 = ax2.set_title('')
title3 = ax3.set_title('')
main_title = fig.suptitle('')


anim = animation.FuncAnimation(fig, animate, init_func=init,
                               frames=101, interval=250, blit=False)


anim.save('file.mp4', writer=writer)
plt.close()

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

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