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

Matplotlib中如何让文本在Bounding Box内居中对齐?

解决Matplotlib中旋转文本在Bounding Box内居中的问题

你遇到的问题是设置ha='center'后,仅能让文本的bbox(边界框)居中,但垂直旋转的文本自身在框内左偏。核心原因是Matplotlib默认的旋转模式是围绕文本bbox的中心旋转,而非你设置的锚点位置。

直接解决方案:添加rotation_mode='anchor'

在ax.text()的参数中加入rotation_mode='anchor',让文本先对齐到锚点(你设置的ha='center'和va='center'位置),再围绕锚点旋转,就能让文本精准在bbox内居中。修改后的代码如下:

import matplotlib
matplotlib.use('TkAgg')

import matplotlib.pyplot as plt

print(matplotlib.__version__)  # 3.5.3

fig, ax = plt.subplots()
ax.plot([.5, .5],
         [0, 1],
         transform=ax.transAxes)
ax.text(.5,
        .5,
        'This text needs to be center-aligned'.upper(),
        ha='center',
        va='center',
        rotation='vertical',
        rotation_mode='anchor',  # 新增该行参数
        transform=ax.transAxes,
        bbox=dict(fc='blue', alpha=.5))
ax.set_title('文本与Bounding Box均已居中对齐')
plt.show()

原理说明

  • 默认的rotation_mode='default'逻辑是:先计算文本的bbox,再围绕bbox的中心旋转,这会导致旋转后的文本相对锚点偏移,出现"框居中但文本偏左"的情况。
  • rotation_mode='anchor'的逻辑是:先将文本对齐到你设定的锚点位置,再围绕锚点完成旋转,确保旋转后的文本始终以锚点为中心,自然与bbox保持居中对齐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:20:56