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'可能影响预设的显示比例
  • 添加标题或标签时需要预留足够边距
相关推荐
yaoh.wang几秒前
力扣(LeetCode) 70: 爬楼梯 - 解法思路
python·算法·leetcode·面试·职场和发展·动态规划·递归
大佬,救命!!!3 分钟前
python对应sql操作
开发语言·python·sql·学习笔记·学习方法
Learner__Q12 分钟前
每天五分钟:二分查找-LeetCode高频题解析_day4
python·算法·leetcode
Darkershadow16 分钟前
Python学习之使用pycharts
开发语言·python
写代码的【黑咖啡】22 分钟前
Python 中的控制流程:掌握程序的逻辑跳转
服务器·javascript·python
Wpa.wk42 分钟前
自动化测试(java) - PO模式了解
java·开发语言·python·测试工具·自动化·po模式
徐先生 @_@|||43 分钟前
Java/Maven 对比 Python/PyPI
开发语言·python
嘻嘻嘻开心1 小时前
Collection接口
linux·windows·python
rebekk1 小时前
什么时候会用到python -m
python
是喵斯特ya1 小时前
python开发web暴力破解工具(进阶篇 包含验证码识别和token的处理)
开发语言·python·web安全