[解決済み] Jupyter/iPythonでプロットを動的に更新するために現在正しい方法は何ですか?
質問
の回答では
ipython notebookでループ内のプロットを動的に更新する方法(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)
どのように解決するのですか?
ループでプロットを更新する例です。これは図中のデータを更新し、毎回図全体を再描画するわけではありません。有限回のシミュレーションを行い、結果をどこかに保存することに興味があるのであれば、問題ないかもしれませんが、実行はブロックされます。
%matplotlib notebook
import numpy as np
import matplotlib.pyplot as plt
import time
def pltsin(ax, colors=['b']):
x = np.linspace(0,1,100)
if ax.lines:
for line in ax.lines:
line.set_xdata(x)
y = np.random.random(size=(100,1))
line.set_ydata(y)
else:
for color in colors:
y = np.random.random(size=(100,1))
ax.plot(x, y, color)
fig.canvas.draw()
fig,ax = plt.subplots(1,1)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_xlim(0,1)
ax.set_ylim(0,1)
for f in range(5):
pltsin(ax, ['b', 'r'])
time.sleep(1)
がありますが、これは
の IPython Widget 版があります。
nbagg
これは現在 Matplotlib リポジトリで進行中です。
. これが利用可能になれば、おそらくこれが
nbagg
.
EDIT: 複数のプロットを表示するように更新
関連
-
[解決済み] ブラウザでJupyter/ipythonノートブックのセル幅を広げるにはどうすればよいですか?
-
[解決済み] Pythonでホームディレクトリを取得するための正しいクロスプラットフォームな方法は何ですか?
-
[解決済み] matplotlib のプロットで軸のテキストを非表示にする
-
[解決済み】Jupyter Notebookでファイルから画像を表示するにはどうすればいいですか?
-
[解決済み] Jupyterノートブックでenv変数を設定する方法
-
[解決済み] SQLAlchemy - テーブルのリストを取得する
-
[解決済み] Cythonのコードを含むPythonパッケージはどのように構成すればよいのでしょうか?
-
[解決済み] Celeryタスクのユニットテストはどのように行うのですか?
-
[解決済み] あるメソッドが複数の引数のうち1つの引数で呼び出されたことを保証する
-
[解決済み] ipython notebookでmatplotlibの図のデフォルトサイズを設定するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 前月の日時オブジェクトを返す
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] Django 1.7で初期マイグレーションからマイグレートバックする方法は?
-
[解決済み] Cythonのコードを含むPythonパッケージはどのように構成すればよいのでしょうか?
-
[解決済み] 異なる順序で同じ要素を持つ2つのJSONオブジェクトを等しく比較するには?
-
[解決済み] djangoフレームワークでフォームフィールドから値を取得するには?
-
[解決済み] virtualenv の `--no-site-packages` オプションを元に戻す。
-
[解決済み] 単純な文字列からtimedeltaオブジェクトを作成する方法
-
[解決済み] Pythonでランダムなファイル名を生成する最良の方法
-
[解決済み] Python の sorted() はどのようなアルゴリズムを使っているのですか?重複