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'可能影响预设的显示比例
  • 添加标题或标签时需要预留足够边距
相关推荐
小小西贝1 小时前
pycharm无法正常调试问题
ide·python·pycharm
百锦再2 小时前
Vue环境下数据导出PDF的全面指南
前端·javascript·vue.js·python·django·pdf·pygame
Sandman6z4 小时前
uv python 卸载
开发语言·python·uv
三道杠卷胡4 小时前
【AI News | 20250521】每日AI进展
人工智能·python·计算机视觉·语言模型·aigc
Chocolate_men5 小时前
ftp、http下载远程文件(多线程、断点续传)
python·网络协议·http
测试19986 小时前
Selenium无法定位元素的几种解决方案详解
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
花菜会噎住7 小时前
Python 计算机网络TCP网络应用程序开发
网络·python·tcp/ip·计算机网络·客户端·服务端
牛马的人生7 小时前
使用亮数据代理IP+Python爬虫批量爬取招聘信息训练面试类AI智能体(手把手教学版)
爬虫·python·tcp/ip·其他
leo_hush7 小时前
python查询elasticsearch 获取指定字段的值的list
python·elasticsearch
红衣小蛇妖8 小时前
Python基础学习-Day30
开发语言·python·学习