ipythonノートブック(1つのセル内)のループ内のプロットを動的に更新する方法の回答では、Pythonループ内のJupyterノートブック内のプロットを動的に更新する方法の例が示されています。ただし、これは反復ごとにプロットを破棄して再作成することで機能し、スレッドの1つにあるコメントで%matplotlib nbagg
は、ノートブックに埋め込まれたインタラクティブな図を提供する新しい魔法を使用することで、この状況を改善できると述べています。静止画像よりも。
しかし、この素晴らしい新nbagg
機能は、私が知る限り完全に文書化されていないようであり、それを使用してプロットを動的に更新する方法の例を見つけることができません。したがって、私の質問は、nbaggバックエンドを使用して、Jupyter / Pythonノートブックの既存のプロットをどのように効率的に更新するのかということです。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ではなく、最後のプロットの2つの静止画像が取得されます。それがなぜであるかについて何か考えはありますか?