Я столкнулся со странной проблемой, которую не могу решить. У меня есть 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()
перед объявлением цифр помогает. Я не удаляю этот вопрос, так как он может пригодиться кому-то в будущем.