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

如何在轴刻度不同的多个Matplotlib绘图中同一位置添加文本?

解决Matplotlib自动在左上角添加文本的问题

完全可行,你可以利用Matplotlib的坐标变换功能,无需手动指定具体轴刻度值,就能让文本固定在绘图的左上角位置。下面是两种最常用的实现方式:

方法1:基于轴域的相对坐标(推荐)

这种方式让文本位置相对于坐标轴的比例固定,不管轴刻度范围怎么变化,文本都会始终处于轴的左上角区域。核心是给文本添加transform=ax.transAxes参数,其中x和y的取值范围为0到1(0对应轴的左/底部,1对应右/顶部)。

修改后的示例代码:

import matplotlib.pyplot as plt

# 绘图1
fig, ax = plt.subplots()
ax.plot([1, 2, 3, 4])
ax.set_ylabel('some numbers')
# 添加左上角文本,x=0.02(距离左边缘2%),y=0.98(距离顶部2%)
ax.text(0.02, 0.98, '自定义文本', fontsize=8, transform=ax.transAxes, 
        verticalalignment='top', horizontalalignment='left')
plt.show()

# 绘图2
fig, ax = plt.subplots()
ax.plot([2, 4, 6, 8])
ax.set_ylabel('some numbers')
ax.text(0.02, 0.98, '自定义文本', fontsize=8, transform=ax.transAxes, 
        verticalalignment='top', horizontalalignment='left')
plt.show()

方法2:基于画布的绝对坐标

如果希望文本固定在整个画布的左上角(而非坐标轴的左上角),可以使用transform=fig.transFigure,此时x和y同样是0到1的比例值:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([1, 2, 3, 4])
ax.set_ylabel('some numbers')
# 固定在画布左上角,x=0.05,y=0.95
fig.text(0.05, 0.95, '画布左上角文本', fontsize=8, 
         verticalalignment='top', horizontalalignment='left')
plt.show()

关键细节

  • verticalalignment='top'和horizontalalignment='left'确保文本的左上角对齐到指定坐标点,避免位置偏移。
  • 可以微调x和y的数值(比如0.01到0.05之间),让文本位置更贴合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 02:57:30