使用matplotlib中的换行符标注图例标题

时间:2014-08-18 05:09:53

标签: matplotlib

我使用以下代码显示带有matplotlib的legend title

import matplotlib.pyplot as plt

# data 
all_x = [10,20,30]
all_y = [[1,3], [1.5,2.9],[3,2]]

# Plot
plt.plot(all_x, all_y)

# Add legend, title and axis labels
plt.legend( [ 'Lag ' + str(lag) for lag in all_x], loc='lower right', title='hello hello hello \n world')
plt.show()

enter image description here

正如你所看到的,"世界"没有居中。我希望它居中,我可以通过手动添加空格来实现这一点:

import matplotlib.pyplot as plt

# data 
all_x = [10,20,30]
all_y = [[1,3], [1.5,2.9],[3,2]]

# Plot
plt.plot(all_x, all_y)

# Add legend, title and axis labels
plt.legend( [ 'Lag ' + str(lag) for lag in all_x], loc='lower right', title='hello hello hello \n        world')
plt.show()

enter image description here

但这是一个麻烦的解决方案。

有没有更合适的方法来实现这一目标?

1 个答案:

答案 0 :(得分:7)

多行matplotlib文本的对齐方式由关键字参数multialignment控制(有关示例http://matplotlib.org/examples/pylab_examples/multiline.html,请参阅此处)。

因此,您可以将图例的标题文本居中,如下所示:

l = plt.legend(['Lag ' + str(lag) for lag in all_x], loc='lower right',
               title='hello hello hello \n world')
plt.setp(l.get_title(), multialignment='center')