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

如何解决seaborn绘图中suptitle与子图标题无法居中对齐的问题

问题原因

plt.suptitle 对齐的参考系是整个画布(Figure),而 plt.title(本质是当前子图的set_title方法)对齐的参考系是绘图子图(Axes)。如果子图因为刻度、轴标签等布局调整没有处于画布水平居中位置,两个标题的居中基准就会不一致,自然无法对齐。

解决方案

推荐将主副标题都绑定到子图的坐标系下,统一以子图为基准居中,代码修改如下:

import seaborn as sns
from matplotlib import pyplot as plt

sns.set_theme(style="darkgrid")
# 注意dpi配置要放在创建画布前才会生效
plt.rcParams['figure.dpi'] = 900 

X = [1,2,3]
y = [.5,.1,.9]

fig, ax = plt.subplots(figsize=(8, 5))  

sns.scatterplot(x=X, y=y, color='#152238', alpha=0.9, legend = False)

# 主副标题都以子图坐标系为基准,x=0.5即代表水平居中
ax.text(x=0.5, y=1.1, s='这是我的主标题', fontsize=18, ha='center', transform=ax.transAxes)
ax.text(x=0.5, y=1.02, s='这是副标题', fontsize=14, ha='center', transform=ax.transAxes)

# 调整顶部边距避免标题被截断
plt.subplots_adjust(top=0.85)
plt.show()

如果你需要保留suptitle的用法,可以手动计算子图的水平中心坐标赋值给suptitle的x参数,实现二者对齐:

# 计算子图水平中心位置
ax_center_x = ax.get_position().x0 + ax.get_position().width / 2
plt.suptitle('这是我的主标题', fontsize = 18, x=ax_center_x)
plt.title('这是副标题', fontsize = 14)

内容的提问来源于stack exchange,提问作者Non-Contradiction

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:27:03