如何将图例标题放在左侧?

3
以下代码创建带标题的图例。
from pylab import *
plt.plot([1,2],[2,3],label='sdfsdf')
legend(title='s') 

在此处输出图片

's'位于图例中心。
我想知道如何将's'放到左侧。

2个回答

6
最简单的方法可能是在标题后面添加大量空格。
import matplotlib.pyplot as plt
plt.plot([1,2],[2,3],label='sdfsdf')
plt.legend(title='s                ')
plt.show()

在这里输入图片描述

这种方法的缺点是,空白的数量取决于图例大小。

因此,另一个选择是通过使用._legend_box.align更改图例内的对齐方式。

import matplotlib.pyplot as plt
plt.plot([1,2],[2,3],label='sdfsdf')
leg = plt.legend(title='s')
leg._legend_box.align = "left"

plt.show()

图像描述在此输入

请注意,这是所有图例条目的对齐方式,因为不幸的是没有办法单独对齐标题。在大多数情况下不会有影响,但如果出现更复杂的图例(例如多列),则必须意识到这一点以防万一出现问题。


从版本3.6开始,有一个对齐参数可以解决这个问题(请参见Avi Vajpeyi的答案)。 - snl

1

matplotlib<3.6

正如@importanceofbeingernest所提到的,对于matplotlib<3.6版本,你需要像下面这样做:

import matplotlib.pyplot as plt
import matplotlib
plt.style.use("default")
plt.figure(figsize=(4,2))
plt.plot([1,2],[2,3],label=f'Matplot version {matplotlib.__version__}')
l = plt.legend(title='Some Title', loc='upper left')
l._legend_box.align='left'
plt.show()

matplotlib==3.6(可能也适用于未来版本)

新增了一个巧妙的alignment关键字参数。详见PR文档

img1

import matplotlib.pyplot as plt
import matplotlib
plt.style.use("default")
plt.figure(figsize=(4,2))
plt.plot([1,2],[2,3],label=f'Matplot version {matplotlib.__version__}')
plt.legend(title='Some Title', loc='upper left', alignment='left')
plt.show()

img2

请注意,v3.4.3中缺少alignment关键字参数。

请参考此处


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接