Matplotlib 图表显示比例控制笔记

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'可能影响预设的显示比例
  • 添加标题或标签时需要预留足够边距
相关推荐
充钱大佬2 小时前
Python测试基础教程
python·log4j·apache
初心丨哈士奇4 小时前
Python 四大基础容器|列表篇
python
明理的信封5 小时前
AI 基础设施的“去 Python 化“:Rust 与 C# 的两条替代路径
人工智能·python·rust
麻雀飞吧6 小时前
2026年AI量化开发,先跑通小流程再加复杂功能
人工智能·python
daphne odera�6 小时前
PyCharm 中 Codex 插件启动失败:unknown variant default 的解决方法
python·chatgpt·pycharm
nbu04william7 小时前
Deepseek-api省token的用法
python·大模型·token·deepseek
测试老哥7 小时前
Pytest自动化测试详解
自动化测试·软件测试·python·测试工具·测试用例·pytest·接口测试
坚持学习前端日记7 小时前
国产化适配全流程适配英伟达本地开发
人工智能·python
源图客8 小时前
云途物流API开发-鉴权认证(Java)
java·网络·python
三川6989 小时前
Tkinter库的学习记录06-变量类别
python