Ich muss überprüfen, ob meine Parametereinstellung richtig ist, also muss ich viele Plots zeichnen, und um diese Plots zu zeichnen, wähle ich matplotlib. Nach jeder Überprüfung muss ich auf den Schließen-Button oben links klicken. Es ist trivial. Gibt es also irgendeine Methode, die die Handlung in ungefähr 3 oder 5 Sekunden zeigen und automatisch schließen lässt, ohne zu klicken? Ich weiß über die plt.close()
, aber es funktioniert nicht. Hier ist mein Code.anzeigen und dann die Figur automatisch in Matplotlib schließen?
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()
mit 'plt.pause (3)' hier besser sein würde, wie es die GUI-Ereignisschleife laufen lassen würde, so dass die Zahl interaktiv ist. – tacaswell
@tacaswell meinst du verwenden 'plt.pause (3)' zu ersetzen 'time.sleep (3)', aber wenn ich damit ersetzt habe, habe ich einige Warnungen auf meinem Terminal */usr/local/lib/python2. 7/dist-packages/matplotlib/backend_bases.py: 2437: MatplotlibDeprecationWarning: Verwenden der Standard-Ereignisschleife, bis die für diese GUI spezifische Funktion implementiert ist warnings.warn (str, mplDeprecation), was ist das Problem hier? – zmwang