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

Matplotlib:如何用垂直箭头标注并使文本居中于箭头尖端

实现Matplotlib垂直箭头标注并让文本居中于箭头尖端

你完全不用手动计算xytext的x坐标!Matplotlib自带了更省心的方式来实现这个需求,核心是利用文本对齐参数和相对坐标偏移,彻底告别手动调参的麻烦:

方法1:固定x坐标 + 水平居中对齐

直接让xytext的x值和箭头尖端(xy参数)的x值保持一致,同时给文本设置水平居中对齐,这样文本会自动居中在箭头尖端的正上方/下方,箭头自然就是垂直的:

import matplotlib.pyplot as plt

plt.annotate(
    'Help here!', 
    xy=(8, 0.4),  # 箭头尖端的目标坐标
    xytext=(8, 0.6),  # 文本位置:x和尖端x一致,y向上偏移
    arrowprops=dict(arrowstyle='->', lw=1),
    ha='center'  # 核心:让文本水平居中对齐
)

plt.show()

方法2:使用相对偏移坐标(更灵活)

如果不想手动计算y坐标的具体数值,可以开启相对偏移模式,直接设置文本相对于箭头尖端的偏移量,箭头会自动保持垂直,文本也会自动居中:

import matplotlib.pyplot as plt

plt.annotate(
    'Help here!', 
    xy=(8, 0.4),  # 箭头尖端坐标
    xytext=(0, 20),  # 相对于尖端:x偏移0(保证垂直),y偏移20个点
    textcoords='offset points',  # 开启相对偏移坐标模式
    arrowprops=dict(arrowstyle='->', lw=1),
    ha='center'  # 文本水平居中
)

plt.show()

关键参数说明:

  • ha='center':设置文本的水平对齐方式为居中,确保文本中心与箭头尖端的x轴位置对齐,完美实现文本居中于箭头尖端的效果。
  • textcoords='offset points':让xytext的数值不再是绝对坐标,而是相对于xy(箭头尖端)的偏移量,x设为0就能保证箭头是纯垂直方向,完全不需要手动匹配坐标。

这样你就再也不用费劲找xytext的x坐标啦,所有对齐和垂直的逻辑都交给Matplotlib处理就好!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:41:46