在 matplotlib 中查看然后自动关闭图形?

2024-05-06

我必须检查我的参数设置是否正确,因此我需要绘制许多图,为了绘制这些图,我选择使用 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()

有关的文档pyplot.show() reads http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.show:

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

显示一个数字。当使用 pylab 模式在 ipython 中运行时,显示 所有数字并返回到 ipython 提示符。

在非交互模式下,显示所有图形并阻塞,直到图形关闭;在交互模式下没有任何效果 除非图形是在从非交互式更改为交互式之前创建的 交互模式(不推荐)。在这种情况下,它会显示 数字但不阻塞。

单个实验关键字参数,block,可以设置为True or False覆盖上面描述的阻塞行为.

所以解决方案是这样的:

plt.show(block=False)
plt.pause(3)
plt.close()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 matplotlib 中查看然后自动关闭图形? 的相关文章

随机推荐