Matplotlib中Figure与Axes对象的自动关联机制问询
问题解答:Matplotlib中Figure与Axes对象的隐式关联机制
当你执行示例中的代码时,fig和ax的关联是通过Matplotlib的状态机机制自动完成的,具体逻辑拆解如下:
核心逻辑
- 调用
plt.figure()时,Matplotlib会将这个新创建的Figure实例设为当前活跃的Figure(pyplot模块内部维护着当前绘图上下文,包括当前fig、当前ax等状态)。 - 执行
plt.axes()时,这个函数的默认行为是在当前活跃的Figure中创建Axes对象,同时自动完成双向关联:- Axes对象会持有指向所属Figure的引用,可通过
ax.figure直接访问对应的fig; - Figure对象会将新Axes实例加入内部的axes列表,可通过
fig.axes查看所有关联的Axes。
- Axes对象会持有指向所属Figure的引用,可通过
验证关联的代码示例
你可以在原代码后添加以下代码验证:
# 验证ax的所属figure是否为我们创建的fig print(ax.figure is fig) # 输出True # 查看fig中包含的所有axes print(fig.axes) # 输出包含ax实例的列表
显式关联的替代写法
如果想避免依赖状态机的隐式行为,也可以用OOP接口的显式写法创建关联:
fig = plt.figure() # 直接在fig对象上调用方法添加axes,参数为[左, 底, 宽, 高]的归一化坐标 ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
这种写法更直观,也是Matplotlib面向对象接口推荐的标准用法之一。
内容的提问来源于stack exchange,提问作者suman pokhrel
相关产品推荐
相关产品推荐

