我必须检查我的参数设置是否正确,所以我需要绘制很多图,并且为了绘制这些图,我选择使用matplotlib。每次检查后,我都需要点击左上角的关闭按钮。这是微不足道的。那么是否有任何方法可以使情节显示在大约3或5秒内并自动关闭而不点击?我知道plt.close()
,但它不起作用。这是我的代码。
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()
答案 0 :(得分:15)
Documentation on pyplot.show()
reads:
matplotlib.pyplot.show(*args, **kw)
显示一个数字。当使用其pylab模式在ipython中运行时,显示 所有数字并返回ipython提示符。
在非交互模式下,显示所有数字并阻止,直到数字已关闭;在交互模式下,它没有任何效果 除非数字是在从非交互式更改为之前创建的 交互模式(不推荐)。在那种情况下它会显示 数字,但不会阻止。
单个实验性关键字参数
block
可以设置为True
或False
以覆盖上述阻止行为。
所以解决方案就是:
plt.show(block=False)
plt.pause(3)
plt.close()