咨询Matplotlib中plt.savefig()无需传入figure参数的实现原理
关于matplotlib.pyplot savefig()与Figures的问题解答
为什么plt.savefig()无需传入figure参数就能保存?
matplotlib的pyplot模块靠状态机机制管理图形对象:
- 如果你没手动创建figure,第一次调用
plt.plot()这类绘图函数时,pyplot会自动生成一个默认的figure实例,同时把它标记为「当前活跃图形」。 - 之后所有pyplot操作(包括
savefig()),默认都会作用于这个「当前活跃图形」。 - 你也可以手动切换当前图形:比如用
fig1 = plt.figure(1)创建第一个图形,fig2 = plt.figure(2)创建第二个,调用plt.figure(1)就能把fig1重新设为当前图形,此时savefig()就会保存fig1。
Matplotlib中的Figures是全局单例吗?
不是。你可以同时创建多个完全独立的Figure实例:
- 示例代码:
import matplotlib.pyplot as plt # 创建两个不同的figure fig1 = plt.figure() plt.plot([1,2,3]) fig2 = plt.figure() plt.plot([3,2,1]) # 切换回第一个figure并保存 plt.figure(1) plt.savefig("fig1.png") # 切换到第二个figure保存 plt.figure(2) plt.savefig("fig2.png") - 每个Figure都有自己的编号(或自定义名称),pyplot只是后台维护了一个指向「当前活跃Figure」的引用,而非全局唯一的单例。你随时可以创建新的Figure,或者切换到已存在的Figure进行操作。
内容的提问来源于stack exchange,提问作者Stani Petrov
相关产品推荐
相关产品推荐

