在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')
但是我发现Neighbors
这个词偏向左边了。
我该怎么调整才能让它居中呢?
5 个回答
25
一个更好的解决方案是使用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()
26
在Matplotlib 3.1.1版本中,plt.title()
和ax.set_title()
这两个函数都可以通过一些额外的参数来设置文本的属性。你可以传入一个叫wrap=True
的参数,这样就可以让标题文本自动换行了。
plt.title('My long title that I want to wrap and stay center-aligned', wrap=True)
或者你也可以用另一种方式来实现。
fig, [ax1, ax2] = plt.subplots(2, 1)
ax1.set_title('My long title that I want to wrap and stay center-aligned', wrap=True)
118
我用这种方式格式化字符串时,得到了正确的对齐效果:
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()