一、核心概念:画布与子图的关系
Matplotlib作为Python最流行的绘图库,其核心在于理解Figure(画布)和Axes(子图)的关系。Figure是顶层容器,相当于一张白纸或画框,负责管理整个图像的尺寸、背景等全局属性;而Axes则是画布上的具体绘图区域,每个Axes都包含独立的坐标系(x/y/z轴)、数据点和图表元素(如标题、图例)。
关键点在于:
- 一个Figure可以包含多个Axes(子图)
- 但每个Axes仅属于一个Figure
- 类比:Figure是画板,Axes是画板上不同位置的独立绘图区
二、两种创建方式:显式与隐式
Matplotlib提供了两种创建图形的方式,区别在于是否主动管理对象引用:
1. 显式创建(面向对象风格)
from matplotlib.figure import Figure
self.figure = Figure(figsize=(7, 7)) # 独立创建Figure实例
self.ax = self.figure.add_subplot(111) # 显式添加子图
特征:
- 手动实例化Figure对象
- 明确控制对象的创建和引用
- 适合GUI嵌入、复杂项目等需要精细控制的场景
2. 隐式创建(pyplot风格)
import matplotlib.pyplot as plt
plt.figure(figsize=(7, 7)) # 隐式创建或激活Figure
ax = plt.subplot(111) # 添加子图
特征:
- 依赖pyplot的状态机自动管理
- 若不保存返回值,后续需通过plt.gcf()获取当前Figure
- 适合快速绘图和交互式环境
三、选择建议
- 需要可重复使用的图形或嵌入应用时 → 选择显式创建
- 进行探索性数据分析时 → 选择隐式创建更高效
四、子图管理实践技巧
-
添加子图的两种方式:
self.figure.add_subplot():显式绑定到特定Figureplt.subplot():隐式依赖当前活跃Figure
-
多子图布局:
- 使用
add_subplot(nrows, ncols, index)创建网格状排列 - 通过
fig.add_axes([left, bottom, width, height])自定义位置
- 使用
-
生命周期管理:
- 显式创建的Figure需手动管理显示和保存
- 隐式创建的Figure由pyplot自动管理
1221

被折叠的 条评论
为什么被折叠?



