Python 居中多行图例标题

Python 居中多行图例标题,python,matplotlib,legend,Python,Matplotlib,Legend,我想完全居中我的多行传奇标题 当标题跨越一行时,它将居中。当它跨越多条直线时,似乎最长的直线居中,然后所有其他直线都与该最长直线左对齐 我研究了matplotlib.font\u manager.FontProperties类,在该类中我可以加粗标题,但似乎没有任何居中选项。谢谢你的建议 fig,ax=plt.subplot() ax.plot([0,1,2,3],[4,1,2,5],label='Very Long label A') ax.plot([0,1,2,3],[3,5,4,1],l

我想完全居中我的多行传奇标题

当标题跨越一行时,它将居中。当它跨越多条直线时,似乎最长的直线居中,然后所有其他直线都与该最长直线左对齐

我研究了
matplotlib.font\u manager.FontProperties
类,在该类中我可以加粗标题,但似乎没有任何居中选项。谢谢你的建议

fig,ax=plt.subplot()
ax.plot([0,1,2,3],[4,1,2,5],label='Very Long label A')
ax.plot([0,1,2,3],[3,5,4,1],label='Very Long label B')
leg=ax.legend()
leg.set_title('Legendary\n title',prop={'size':12,'weight':'bold'})

我的解决方案是使用matplotlib的Tex功能。您可以找到教程和要求。 使用以下代码,图例标题将居中

当然,现在您可以充分利用Tex格式,而不必回到字体属性。我把这个放进去是为了演示一下你可以混合它

fig, ax = plt.subplots()
plt.rcParams['text.usetex'] = True
ax.plot([0, 1, 2, 3], [4, 1, 2, 5], label='Very Long label A')
ax.plot([0, 1, 2, 3], [3, 5, 4, 1], label='Very Long label B')

leg = ax.legend()
leg.set_title(r'\begin{center} Legendary \\ Title \end{center}', prop={'size': 12, 'weight':'bold'})

我的解决方案是使用matplotlib的Tex功能。您可以找到教程和要求。 使用以下代码,图例标题将居中

当然,现在您可以充分利用Tex格式,而不必回到字体属性。我把这个放进去是为了演示一下你可以混合它

fig, ax = plt.subplots()
plt.rcParams['text.usetex'] = True
ax.plot([0, 1, 2, 3], [4, 1, 2, 5], label='Very Long label A')
ax.plot([0, 1, 2, 3], [3, 5, 4, 1], label='Very Long label B')

leg = ax.legend()
leg.set_title(r'\begin{center} Legendary \\ Title \end{center}', prop={'size': 12, 'weight':'bold'})

使用
TeX
的替代方法是设置图例标题的
multialignment
参数。我看不到在创建时设置它的方法,但由于它只是一个matplotlib
Text
对象,我们可以在使用函数设置标题后进行设置,如下所示:

leg = ax.legend()
leg.set_title('Legendary\nTitle', prop={'size': 12, 'weight':'bold'})
leg.get_title().set_multialignment('center')

使用
TeX
的替代方法是设置图例标题的
多重对齐
参数。我看不到在创建时设置它的方法,但由于它只是一个matplotlib
Text
对象,我们可以在使用函数设置标题后进行设置,如下所示:

leg = ax.legend()
leg.set_title('Legendary\nTitle', prop={'size': 12, 'weight':'bold'})
leg.get_title().set_multialignment('center')

谢谢你的回答,也谢谢你把我指给特克斯!这确实带来了许多可能性。我稍后会检查它是否有效,如果有效,将标记为已接受。再次感谢您的回答!然而,我决定将@tmdavison的答案标记为已被接受,因为它工作更干净,并且可能适用于更多的人,因为text.usetex确实有一些外部依赖项,不是每个人都可以轻松实现。感谢您的答案并将我指给Tex!这确实带来了许多可能性。我稍后会检查它是否有效,如果有效,将标记为已接受。再次感谢您的回答!然而,我决定将@tmdavison的答案标记为已被接受,因为它工作更干净,并且可能适用于更多的人,因为text.usetex确实有一些外部依赖性,不是每个人都可以轻松实现