2016-08-17 7 views
0

こんにちはmatplotlibに計算を止めることなくいくつかの数字を示したいと思います。私はそれに関係する計算は、たとえば終了した直後に表示するフィギュアをしたいと思います:matplotlibで計算を停止せずにいくつかの数字を表示

import numpy as np 
import pylab as py 

x=np.linspace(0,50,51) 
y=x 
fig, axs = plt.subplots(1, 1) 
cs = axs.plot(x, y) 

は今、私はいくつかの他の計算をするために可能性をブロックせずにプロットを表示したい

plt.show(block=False) 
plt.pause(5) 

私は端でplt.show()を呼び出すまで、これは(Iを加え5 secound休止の後)が最初のフリーズ動作

y1=2*x 
fig1, axs1 = plt.subplots(1, 1) 
cs1 = axs1.plot(x, y1) 

plt.show() 

第2のプロットを作成します。最初の図が表示され、動作することが重要です。計算後に別の図が追加されます。

+0

私はhttps://github.com/matplotlib/matplotlib/issues/2134/ efiringのコメントで、このトピックに関するいくつかの古い答えを見つけました。基本的に彼は、計算が実行されると数字が凍結し、それについては何もしないと言います。プロットを処理するには計算を停止する必要があります。それ以来何か変わったのだろうか? – Revist

答えて

0

次のコードは、必要な操作を行う必要があります。私はIPython Notebookでこれを行いました。

from IPython import display 
import matplotlib.pyplot as plt 

def stream_plot(iterable, plotlife=10.): 

     for I in iterable: 
      display.clear_output(wait=True) 
      output = do_calculations_on_i(I) 
      plt.plot(output) 
      display.display(plt.gca()); 
      time.sleep(plotlife); #how long to show the plot for 

wait = Trueは、プロットに新しい何かがあるか、または他の出力が印刷されるまで、古いプロットをクリアするのを待ちます。

私はそれを拭く前に私は各プロットを観察することができますので、私はそこに睡眠を入れた。これは、複数のエンティティの分布を観測する必要がある場合に便利でした。あなたはあなたがしたいことのためにそれを必要とするかもしれません。

+0

お返事ありがとうございます。このコードはいくつかのIに対して計算を行い、他のものに対して10秒のプロットを表示する計算を停止しますか? – Revist

+0

@Revist、はい。計算に時間がかかる場合は、ループ操作をスリープ(一時停止)する必要はありません。 私は以前のものに図を追加したいというあなたの要望を忘れました。あなたはあなたの仕事についてもっと少しの文脈を提供できますか?知らないうちに、出力をいくつかのリストに入れて、そのリストから各反復で置き換えることができます。 – Mansweet

関連する問題