matplotlib之pyplot模块——图形的显示、关闭、重绘(show()、close()、draw())
当前有效matplotlib版本为:3.4.1。显示图形:show()show()的功能为显示所有打开的图形。函数的签名为:matplotlib.pyplot.show(*, block=None)函数只有一个参数block,简单来讲,当取值为True是matplotlib采用非交互绘图模式,取值为False是matplotlib采用交互绘图模式。注意!show()函数的具体行为与当前后端(bac
当前有效matplotlib
版本为:3.4.1
。
显示图形:show()
show()
的功能为显示所有打开的图形。
函数的签名为:matplotlib.pyplot.show(*, block=None)
函数只有一个参数block
,简单来讲,当取值为True
是matplotlib
采用非交互绘图模式,取值为False
是matplotlib
采用交互绘图模式。
注意!show()
函数的具体行为与当前后端(backend)息息相关,在交互式后端中图形将会嵌入到后端的GUI中显示。
def show(*args, **kwargs):
_warn_if_gui_out_of_main_thread()
return _backend_mod.show(*args, **kwargs)
调用pyplot.show()
之后对pyplot.savefig()
函数影响
在使用交互式后端时,如果想显示图形同时将图形保存为图像文件,需要注意pyplot.savefig()
函数一定要在pyplot.show()
函数前,因为在非交互绘图模式下,调用pyplot.show()
函数后,Figure
对象会关闭并解除在pyplot
模块中的引用,此时再使用pyplot.savefig()
函数将保存一个新的空图形。注意:交互绘图模式和调用面向对象式绘图方法Figure.savefig()
保存图形不受影响。
jupyter notebooks
会自动显示图形
在使用jupyter notebook时,jupyter后端(通过%matplotlib inline
、%matplotlib notebook
或 %matplotlib widget
等魔术命令激活)默认会在每个单元格最后调用pyplot.show()
函数,因此,通常无需再显式调用pyplot.show()
函数。
关闭图形:close()
close()
函数的功能为销毁图形(figure
)对象,在交互式后端中相当于关闭窗口。
close()
函数的签名为:matplotlib.pyplot.close(fig=None)
函数的参数为fig
,即需要关闭的图形。其取值有以下情况:
None
:当前图形对象,相当于pyplot.gcf()
。Figure
对象:指定的Figure
实例。- 整数:图形的编号。
- 字符串:图形的名称。
'all'
:所有图形。
pyplot.close()
函数源码:
def close(fig=None):
if fig is None:
manager = _pylab_helpers.Gcf.get_active()
if manager is None:
return
else:
_pylab_helpers.Gcf.destroy(manager)
elif fig == 'all':
_pylab_helpers.Gcf.destroy_all()
elif isinstance(fig, int):
_pylab_helpers.Gcf.destroy(fig)
elif hasattr(fig, 'int'):
# if we are dealing with a type UUID, we
# can use its integer representation
_pylab_helpers.Gcf.destroy(fig.int)
elif isinstance(fig, str):
all_labels = get_figlabels()
if fig in all_labels:
num = get_fignums()[all_labels.index(fig)]
_pylab_helpers.Gcf.destroy(num)
elif isinstance(fig, Figure):
_pylab_helpers.Gcf.destroy_fig(fig)
else:
raise TypeError("close() argument must be a Figure, an int, a string, "
"or None, not %s" % type(fig))
简易案例
import matplotlib.pyplot as plt
f1,_=plt.subplots()
f2,_=plt.subplots()
f3,_=plt.subplots()
f4,_=plt.subplots()
# 关闭当前图形,即编号为4的图形
plt.close()
# 关闭编号为2的图形
plt.close(2)
# 关闭图形对象f3(编号为3的图形)
plt.close(f3)
# 显示当前活动的图形编号
print(plt.get_fignums())
# 关闭剩余的图形
plt.close('all')
# 显示当前活动的图形编号
print(plt.get_fignums())
输出为:
[1]
[]
重绘图形:draw()
draw()
函数的签名为matplotlib.pyplot.draw()
。
draw()
函数的功能为重绘图形,相当于调用了gcf().canvas.draw_idle()
。
在非交互绘图模式下,图形显示会被阻塞,当图形被修改时,不会立即重绘,需要使用draw()
函数重绘图形(常见的使用场景为事件处理)。
更多推荐
所有评论(0)