2017-02-13 7 views
1

プロットを作成する方法はありますか?plt.showメソッドが呼び出されるたびに進行状況が表示されますか? plt.show(block = False)またはplt.show(block = True)で再生しても動作させることはできません。matplotlib in pydev

import matplotlib.pyplot as plt 

xvals = [i for i in range(0, 10)] 
yvals1 = [i**2 for i in range(0, 10)] 
yvals2 = [i**3 for i in range(0, 10)] 
yvals3 = [i**4 for i in range(0, 10)] 

f, ax = plt.subplots(1) 
ax.plot(xvals, yvals1) 

plt.show(block=False) 
raw_input("Program paused. Press Enter to continue...") 

ax.plot(xvals, yvals2) 
plt.show() # Need to close the window to go ahead. 
raw_input("Program paused. Press Enter to continue...") 

ax.plot(xvals, yvals3) 
plt.show(block=False) 
raw_input("Program paused. Press Enter to continue...") 

私はPydevでvirtualenvでmatplotlib == 2.0.0を実行しています。

+1

[この回答](http://stackoverflow.com/a/12685979/3005167)の情報が役立つかもしれません。 (つまり、スクリプトの先頭に 'plt.ion()'を呼び出すことを試みます)。 – kazemakase

+0

plt.ion()を追加することは別として、各plt.show()コマンドの後にplt.pause(0.0001)を追加すると、それがトリックになります。しかし、他に良い方法があるかどうかは分かりません。 – fara

+1

別の方法があります:[アニメーション](http://matplotlib.org/1.4.1/examples/animation/index.html)どちらの方が良いかは、ユースケースによって異なります。アニメーションはより複雑ですが、より堅牢である可能性があります。私はおそらくこれを行うだろう "生産"のコードのために。開発/デバッグ中に実行されるコードのステップを視覚化したいだけの場合は、「速くて汚い」と思うと「頑丈で精巧です」と思う。 – kazemakase

答えて

0

関連するイベントループをリリースしてUIをユーザーにリフレッシュできるようにすることができます(つまり、イベントループを取得してQEventLoop :: processEventsを呼び出す必要があります)。現れる)。