当前有效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()函数重绘图形(常见的使用场景为事件处理)。
本文详细介绍了matplotlib库中的show()、close()和draw()函数,用于图形显示、关闭和重绘。show()函数用于显示图形,其行为取决于后端和block参数;close()函数用于关闭指定或当前图形;draw()函数则用于在非交互模式下重绘修改后的图形。在Jupyter Notebook中,图形通常会自动显示,无需额外调用show()。案例展示了如何关闭和显示多个图形。
1694





