В ответах на вопрос, как динамически обновлять график в цикле в записной книжке ipython (в пределах одной ячейки) , приводится пример динамического обновления графика внутри записной книжки Jupyter в цикле Python. Однако это работает путем разрушения и воссоздания сюжета на каждой итерации, и в комментарии в одном из потоков отмечается, что эту ситуацию можно улучшить, используя новую %matplotlib nbagg
магию, которая предоставляет интерактивную фигуру, встроенную в записную книжку, а не чем статичное изображение.
Однако эта замечательная новая nbagg
функция кажется полностью недокументированной, насколько я могу судить, и я не могу найти пример того, как использовать ее для динамического обновления графика. Таким образом, мой вопрос: как эффективно обновить существующий график в записной книжке Jupyter / Python, используя бэкэнд nbagg? Поскольку динамическое обновление графиков в matplotlib в целом является сложной задачей, простой рабочий пример будет огромным подспорьем. Указатель на любую документацию по теме также был бы чрезвычайно полезен.
Чтобы прояснить, о чем я прошу: я хочу запустить некоторый код моделирования для нескольких итераций, затем нарисовать график его текущего состояния, затем запустить его еще несколько итераций, а затем обновить график, чтобы отразить текущее состояние и так далее. Таким образом, идея состоит в том, чтобы нарисовать график, а затем, без какого-либо взаимодействия с пользователем, обновить данные на графике, не разрушая и не создавая заново все это.
Вот немного измененный код из ответа на связанный выше вопрос, который достигает этого, каждый раз заново отрисовывая всю фигуру. Хочу добиться того же результата, но более эффективно используя nbagg
.
%matplotlib inline
import time
import pylab as pl
from IPython import display
for i in range(10):
pl.clf()
pl.plot(pl.randn(100))
display.display(pl.gcf())
display.clear_output(wait=True)
time.sleep(1.0)
while True:
на цикл for, по окончании цикла я получу два статических изображения последнего сюжета, а не интерактивное изображение nbagg. Есть идеи, почему это так?