Я никогда не понимал цели drawnow
. Вы должны получить точно такой же результат, просто вызвав вашу функцию.
Ни drawnow, ни его эквивалент, просто использующие plt.ion()
и plt.draw()
или plt.pause()
, не будут работать в ноутбуках Jupyter. Конечно, не используйте %matplotlib inline
бэкэнд (потому что вы не можете анимировать pngs); но также не с %matplotlib notebook
бэкэндом из-за цикла событий, который не был запущен, пока не будет показан последний рисунок.
Параметры отображения анимации в блокнотах Jupyter перечислены в
Анимация в записной книжке iPython .
Рекомендуется создать FuncAnimation
.
.
Анимация сверху будет выглядеть как
%matplotlib notebook
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import numpy as np
x = np.random.rand(10, 2)
def function_to_draw_figure(i):
line.set_data(*x[i,:])
plt.figure()
line, = plt.plot([], marker="o")
plt.xlim(0, 1)
plt.ylim(0, 1)
ani = FuncAnimation(plt.gcf(), function_to_draw_figure, frames=len(x),
interval=500, repeat=False)
plt.show()