Matplotlib:如何将标题与 y 标签精确对齐?

nev*_*ves 7 matplotlib

在 matplotlib 中,我可以使用以下命令轻松地将标题对齐到左侧:

ax.set_title(f"Title", ha='left', x=-0)
Run Code Online (Sandbox Code Playgroud)

我得到:

标题左对齐

但有时我想将标题与左标签开始的位置对齐,以获得如下内容:

标题与左侧标签对齐

我通常通过反复试验来做到这一点。最后我得到一个任意的 x 偏移量,例如:

ax.set_title(f"Title", ha='left', x=-.12)
Run Code Online (Sandbox Code Playgroud)

我如何自动计算这个-.12偏移量?

Diz*_*ahi 6

使用转换(请参阅转换教程),您可以找到标签边界框左侧的位置并将其转换为轴坐标以传递给set_title()

fig, ax = plt.subplots()
fig.canvas.draw()
bbox = ax.get_yticklabels()[-1].get_window_extent()
x,_ = ax.transAxes.inverted().transform([bbox.x0, bbox.y0])
ax.set_title('A title aligned with the y-axis labels', ha='left', x=x)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述