6

SOを検索しましたが、問題に対する適切な「解決策」が見つかりませんでした。プロットしたいいくつかのデータでループを実行しています。ループの各ステップで-plt.show()を使用して図をプロットします。ただし、これはブロック機能であるため、手動でウィンドウを閉じてからループが続行され、次のプロットが表示されるまでスタックします。

私がやりたいのは、キーを押すイベントをバインドして図を閉じ、ループを続行できるようにすることです(図の外でマウスを使用して「X」を押すのではありません)。

それができない場合は、タイマーをセットしてフィギュアを閉じてループを続けたいと思います。

私のすべての問題は、plt.show()が他のすべてをブロックしているという事実に対処しているようです-これを回避する方法はありますか?

私のプロットに関するいくつかの注意:それらは同じ軸を使用しますが、散布図、塗りつぶしボックス、および注釈が含まれています-これらは常に変化しています。

ありがとう!

4

1 に答える 1

5

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

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

ionインタラクティブな使用法と非インタラクティブな使用法の詳細については、こちらをご覧ください

または、ボタンを押すアプローチを使用する場合は、コールバックを割り当てます

def moveon(event):
    pp.close()

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

コマンドがブロックされているため、イベントタイマーはより扱いにくいため、showおそらくスレッド化が必要になります。

于 2012-08-01T17:39:52.450 に答える