2012-08-01 5 views
6

私はSOで検索しましたが、私の問題に正しい "解決策"が見つかりませんでした。私はプロットしたいいくつかのデータをループしています。ループの各ステップで、私はplt.show()で図をプロットします。しかし、これはブロック機能であるため、手動でウィンドウを閉じてからループが続き、次のプロットが表示されるまで私は固執しています。私がやりたい何matplotlibのpythonとupdate figure

は姿を閉じてループを継続するために、キープレスイベントをバインドすることができる(というよりも図のうち「X」にマウスを使用して)です。

これができない場合は、図を閉じてループを続けるタイマーを設定したいと思います。

私のすべての問題は、plt.show()が他のすべてをブロックしているという事実に対処しているようです。

私のプロットのいくつかの注意:彼らは同じ軸を使用しますが、散布図が含まれている、箱を記入し、注釈 - 常に変化しています。

ありがとうございます!

答えて

4

matplotlib.pyplotからionを使用してみてください:

import matplotlib.pyplot as pp 
pp.ion() 
fig = pp.figure() 

詳細情報についてionとインタラクティブな非対話型の使用対here

また、あなたがボタンを押すのアプローチで行くことにしたい場合は、コールバック

を割り当てます
def moveon(event): 
    pp.close() 

cid = fig.canvas.mpl_connect('key_press_event', moveon) 
pp.show() 

イベントタイマーは、showコマンドがブロックされているので、おそらくスレッディングが必要です。

+1

これはすばらしい答えです。さらに、PyQTのようなものをGUIに組み込むことで、より多くの制御と必要に応じて更新する機能を提供することができます。 – TimothyAWiseman

+0

これは私には役に立たなかった。私は提供されたものとまったく同じコードを使用し、変わったことが起こります。何が起こったのかは、すべての人物が連続して開かれた(私はボタンとボタンを押さなかった)、彼らには何も持たなかったということでした。また、「応答していません」と表示され、私のPythonがシャットダウンされました。 pp.ion()は問題を引き起こすようです。助けて?? – mcfly

+0

@mcfly: 'ion()'オプションは、実行が一時停止しないことを意味します。既存のプロットを毎回置き換えたい場合は、 'figure'を一度呼び出すだけです。 – jmetz

関連する問題