我使用以下代码显示带有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()
正如你所看到的,"世界"没有居中。我希望它居中,我可以通过手动添加空格来实现这一点:
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()
但这是一个麻烦的解决方案。
有没有更合适的方法来实现这一目标?
答案 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')