在matplotlib中拆分图形的标题

Eag*_*gle 28 matplotlib

我使用matplotlib创建一个包含4个子图的图形.

我想拆分一个子图的标题,这样每条线都会相对于子图位于中心位置.

我试过了

import matplotlib.pylab as plt

fig = plt.figure(num=0,figsize=(8.27, 11.69), dpi=300)
ax  = fig.add_subplot(2, 2, 1)
ax.set_title(r'Normalized occupied \\ Neighbors')
Run Code Online (Sandbox Code Playgroud)

而我得到的是Neighbors左侧缩进.

我怎么能纠正这个?

Yan*_*ann 46

当我以这种方式格式化字符串时,我得到了正确的对齐:

import matplotlib.pylab as plt

fig = plt.figure()#num=0,figsize=(8.27, 11.69), dpi=300)
ax  = fig.add_subplot(2, 2, 1)
ax.set_title('Normalized occupied \n Neighbors')

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


AlQ*_*ist 13

r前缀兼容的更好的解决方案(特别是当需要使用LaTeX标记时)是将标题文本分成两个(或更多部分),例如,

import matplotlib.pylab as plt

fig = plt.figure()
plt.title('My Title\n' + r'$\alpha - \omega$ are LaTeX Markup')
plt.plot([1,2,3,4])
plt.show()
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的评论 - 我可以在标题中有 2 行并为两者分别设置属性吗?比如上面的字体变大加粗,下面的正常? (3认同)

小智 12

我知道这个问题有点旧,但对于其他寻找参考的人 - 在 Matplotlib 3.1.1 中,plt.title() 和 ax.set_title() 都允许将文本属性作为 kwargs传递,因此您可以拥有

plt.title('My very long title that I want to wrap and stay center-aligned', wrap=True)

或者

fig, [ax1, ax2] = plt.subplots(2,1) ax1.set_title('My very long title that I want to wrap and stay center-aligned', wrap=True)

  • 这应该是正确的答案,因为它将根据您的图形尺寸动态调整标题长度。 (2认同)