2016-11-03 9 views
1

私はパラメータ設定が正しいかどうかをチェックする必要があるので、たくさんのプロットを描く必要があります。これらのプロットを描画するには、matplotlibを使用することを選択します。それぞれのチェックの後、左上にある閉じるボタンをクリックする必要があります。それは簡単です。だから、約3〜5秒でプロットを表示させ、クリックせずに自動的に閉じることができる方法はありますか?私はplt.close()について知っていますが、動作しません。ここに私のコードです。matplotlibで図を表示して自動的に閉じますか?

from math import * 
import sys 
import numpy as np 
from scipy import special 
import matplotlib.pyplot as plt 

x1=[] 
y1=[] 
x2=[] 
y2=[] 
x3=[] 
y3=[] 
with open('fort.222','r') as f: 
    for line in f: 
     a,b=line.split() 
     x1.append(float(a)) 
     y1.append(float(b)) 

n=int(sys.argv[1]) 
i=0 
with open('fort.777','r') as f: 
    for line in f: 
     if i==0: 
      k1=float(line) 
     i=i+1 

x1,y1=np.array(x1),np.array(y1) 

z1=special.eval_hermite(n,x1*k1)*sqrt(1/(sqrt(pi)*pow(2,n)*factorial(n)))*sqrt(k1)*np.exp(-np.power(k1*x1,2)/2.)                         
plt.figure() 
plt.plot(x1,z1) 
plt.plot(x1,y1) 
plt.plot(x1,np.zeros(len(x1))) 
plt.title('single center & double center') 
plt.xlim(x1.min(),x1.max()) 
plt.ylim(-max(abs(y1.min()-0.1),y1.max()+0.1),max(abs(y1.min()-0.2),y1.max()+0.2)) 
plt.xlabel('$\zeta$'+'/fm') 
plt.legend(('single, n='+sys.argv[1],'double, n='+sys.argv[1]),loc=2,frameon=True) 

plt.show() 
plt.close() 

答えて

5

Documentation on pyplot.show() reads

matplotlib.pyplot.show(*args, **kw)

図を表示します。ピラッブモードでipythonを実行しているときは、数字は と表示され、ipythonプロンプトに戻ります。

非インタラクティブモードでは、数字をすべて表示し、数字が閉じられるまでブロックします。;インタラクティブモードでは、インタラクティブモードから非インタラクティブモード( )に変更する前にフィギュアが作成されていない限り、効果はありません(推奨されません)。 その場合、数字は と表示されますが、ブロックされません。

単一実験キーワード引数、blockは、上述のブロッキング挙動をオーバーライドするTrueまたはFalseに設定することができます。

だから、解決策はこれです:図は、対話型であるので、それはGUIのイベントループの実行を聞かせて(3) `ここで良いだろう` plt.pauseを使用して

plt.show(block=False) 
time.sleep(3) 
plt.close() 
+3

。 – tacaswell

+0

@tacaswell 'time.sleep(3)'の代わりに 'plt.pause(3)'を使うことを意味しますが、私がそれに置き換えられた場合、端末*/usr/local/lib/python2にいくつか警告があります。 7/dist-packages/matplotlib/backend_bases.py:2437:MatplotlibDeprecationWarning:このGUI固有の関数が実装されるまで、デフォルトイベントループを使用します。 warnings.warn(str、mplDeprecation)、ここで何が問題ですか? – zmwang

関連する問題