You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在matplotlib子图左上角添加不受参数影响的固定位置标签

Matplotlib子图固定左上角标签稳定实现方案

核心解决思路是使用点单位的固定偏移替代相对坐标偏移,搭配子图轴坐标锚定,完全不受子图宽高比、绘图数据、轴标签/子图标题的影响。

实现代码

import matplotlib.pyplot as plt
from matplotlib.transforms import ScaledTranslation

# 封装统一的标签添加函数
def add_subplot_label(ax, label, left_offset=5):
    """
    ax: 子图对象
    label: 标签内容,如"(a)"
    left_offset: 标签相对子图左上角向左偏移的点数(1点=1/72英寸),正数向左偏移
    """
    # 水平偏移使用点单位,固定偏移距离,不受子图宽高比影响
    transform = ax.transAxes + ScaledTranslation(-left_offset/72, 0, fig.dpi_scale_trans)
    ax.text(
        0, 1, label,
        ha="right", va="top", # 文本右上角对齐锚点(0,1),刚好贴合子图左上角
        transform=transform,
        fontsize="medium"
    )

# 绘图示例
fig, axes = plt.subplots(ncols=2, constrained_layout=True)

ax = axes[0]
ax.plot([0, 1], [0, 1])
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_title("子图1标题") # 即使添加标题,标签位置也不受影响
add_subplot_label(ax, "(a)")

ax = axes[1]
ax.plot([0, 1], [0, 1])
ax.set_xlabel("x")
ax.set_ylabel("y")
add_subplot_label(ax, "(b)")

plt.show()

如果需要把标签放在子图内部左上角,直接去掉偏移、设置ha="left"即可,无需其他调整。

方案优势

  • 水平偏移采用物理点单位,无论子图宽高比如何变化,偏移距离固定,无需手动调整相对坐标参数
  • 垂直位置锚定子图轴坐标的顶部(0,1),无论是否添加子图标题、坐标轴标签,都能始终对齐子图坐标轴的左上角
  • 只需调整left_offset参数即可统一修改所有子图标签的偏移距离,适配不同排版需求

内容的提问来源于stack exchange,提问作者Tom de Geus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 02:15:04