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'可能影响预设的显示比例
  • 添加标题或标签时需要预留足够边距
相关推荐
cheungxiongwei.com21 分钟前
Rust 驱动的 Python 工具革命:Ruff 和 uv 与传统工具的对比分
python·rust·uv
web135085886353 小时前
Python大数据可视化:基于python的电影天堂数据可视化_django+hive
python·信息可视化·django
东方芷兰3 小时前
伯克利 CS61A 课堂笔记 11 —— Mutability
笔记·python
不会Hello World的小苗6 小时前
Java——列表(List)
java·python·list
m0_748235958 小时前
Python大数据可视化:基于Python的王者荣耀战队的数据分析系统设计与实现_flask+hadoop+spider
hadoop·python·flask
Dyan_csdn8 小时前
【Python项目】基于Python的Web漏洞挖掘系统
网络·python·安全·web安全
Minner-Scrapy8 小时前
DApp 开发入门指南
开发语言·python·web app
&小刘要学习&9 小时前
anaconda不显示jupyter了?
python·jupyter
jerry-899 小时前
jupyterhub_config配置文件内容
python
奔跑吧邓邓子9 小时前
【Python爬虫(36)】深挖多进程爬虫性能优化:从通信到负载均衡
开发语言·爬虫·python·性能优化·负载均衡·多进程