标题和副标题对齐不一致

aso*_*uin 5 python matplotlib

我试图同时使用两者ax.set_title()并将plt.suptitle()标题和副标题合并到图表中,但两者似乎不具有相同的对齐方式。例如,以下内容:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

cats = ('One', 'Two')
vals = (12, 4) 

ax.barh(cats, vals, align='center')
plt.suptitle('Title')
ax.set_title('Title')
plt.show()
Run Code Online (Sandbox Code Playgroud)

给我们以下未对齐的标题:

带有短 y 标签的标题未对齐

我怎样才能让这两个标题正确对齐?ax.title我认为这可能与对齐轴和对齐图形有关plt.suptitle,但测试更长的 y 标签似乎不会影响偏移量:

fig, ax = plt.subplots()

cats = ('One million tiny engines running at one hundred miles per hour', 'Two')
vals = (12, 4) 

ax.barh(cats, vals, align='center')
plt.suptitle('Title')
ax.set_title('Title')
plt.show()
Run Code Online (Sandbox Code Playgroud)

带有长 y 标签的标题未对齐

小智 13

matplotlib 将副标题与对齐,将标题与子对齐。您可以使用以下命令手动调整字幕fig.subplotpars

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

cats = ('One', 'Two')
vals = (12, 4) 

# Mid point of left and right x-positions
mid = (fig.subplotpars.right + fig.subplotpars.left)/2

ax.barh(cats, vals, align='center')
plt.suptitle('Title',x=mid)
ax.set_title('Title')
plt.show()
Run Code Online (Sandbox Code Playgroud)

固定标题

享受!