Matplotlib: построение графиков на двух отдельных фигурах внутри oop для получения «анимаций» в реальном времени - PullRequest
0 голосов
/ 22 февраля 2020

Я столкнулся со странной проблемой, которую не могу решить. У меня есть al oop, который повторяется в течение нескольких временных шагов. Внутри каждой итерации я хочу, чтобы две фигуры были «обновлены» и снова нанесены на график - каждая на одной фигуре / в окне - чтобы получить вид анимации. Каждый график пересчитывается в отдельную функцию, чтобы сохранить код в чистоте, хотя я также пытался сделать это одной функцией.

Когда есть только одна фигура, это не проблема. Когда их два, один из них отображается правильно, он обновляется после каждой итерации, но другой зависает.

Структура кода следующая:

скрипт:

import pylab as pl
import matplotlib.pyplot as plt 

t = 1  # time step index
end_sim = 0  # end of simulation condition
fig1 = pl.figure("a")  # I used pylab because it enables easy switching between plots
fig2 = pl.figure("b")

while not end_sim:
    create_plot_1(t)
    create_plot_2(t)

    plt.show(block=False)  # block=False to allow figures refreshing without closing them manually
                           # I also tried plt.show() inside the functions but with no effect

    if t > 10:  # or any other condition
        end_sim = 1
    t += 1
    plt.pause(0.3)   

функции: create_plot_1 () и create_plot_2 () (они имеют похожую структуру)

import pylab as pl
import matplotlib.pyplot as plt 


def func_name(t):
    pl.figure("a")  # to switch to the figure "a" (or "b" in the second function)
    plt.plot([0, 1], [0, t])  # any plot, it doesn't matter a lot. "t" to visualize changes in time

РЕДАКТИРОВАТЬ: я уже понял это. Помещение plt.ion() перед объявлением цифр помогает. Я не удаляю этот вопрос, так как он может пригодиться кому-то в будущем.

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