1. 基础概念
1.1 画布(Figure)和绘图区(Axes)
- 画布(Figure) : 整个图像的容器,通过
figsize
控制物理尺寸 - 绘图区(Axes): 实际绘图的区域,包含坐标轴和数据
python
# 创建画布
fig = plt.figure(figsize=(8, 8)) # 8×8英寸的正方形画布
1.2 绘图区域布局
使用add_axes()
方法控制绘图区在画布中的位置和大小:
python
ax = fig.add_axes([left, bottom, width, height])
- 所有参数取值范围为0-1,表示相对于画布的比例
- 示例:
[0.15, 0.15, 0.75, 0.75]
left
: 左边距占15%bottom
: 底部边距占15%width
: 绘图区宽度占75%height
: 绘图区高度占75%
2. 控制坐标轴比例的方法
2.1 基于数据单位的比例控制
python
ax.set_aspect('equal') # 使x轴和y轴的数据单位比例为1:1
- 适用场景:
- 散点图中需要保持x和y轴的物理单位一致
- 绘制几何图形时需要保持形状不变形
2.2 基于显示区域的比例控制
python
ax.set_box_aspect(1) # 使绘图区域呈现正方形
- 适用场景:
- x轴和y轴数值范围差异较大
- 需要控制显示区域的视觉比例
- 损失曲线、统计图表等
3. 完整示例代码
python
import matplotlib.pyplot as plt
# 1. 创建画布
fig = plt.figure(figsize=(8, 8))
# 2. 创建绘图区域并控制位置
ax = fig.add_axes([0.15, 0.15, 0.75, 0.75])
# 3. 绘制数据
ax.plot(x, y)
# 4. 设置绘图区域比例
ax.set_box_aspect(1) # 保持显示区域为正方形
# 5. 保存图片
plt.savefig('output.png', dpi=300, bbox_inches='tight')
4. 常见应用场景与建议
4.1 不同类型图表的推荐设置
- 损失曲线 : 使用
set_box_aspect(1)
- 散点图 : 根据数据特点选择
set_aspect('equal')
或set_box_aspect(1)
- 统计图表 : 通常使用
set_box_aspect()
控制显示比例
4.2 调整技巧
- 边距调整:通过
add_axes()
的参数微调 - 分辨率:保存时使用
dpi
参数控制 - 标题和标签:根据比例调整
pad
值避免重叠
4.3 注意事项
set_aspect('equal')
可能导致数值范围差异大的图表变形bbox_inches='tight'
可能影响预设的显示比例- 添加标题或标签时需要预留足够边距