以下代码创建带标题的图例。
from pylab import *
plt.plot([1,2],[2,3],label='sdfsdf')
legend(title='s')
's'位于图例中心。
我想知道如何将's'放到左侧。
from pylab import *
plt.plot([1,2],[2,3],label='sdfsdf')
legend(title='s')
's'位于图例中心。
我想知道如何将's'放到左侧。
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()
请注意,这是所有图例条目的对齐方式,因为不幸的是没有办法单独对齐标题。在大多数情况下不会有影响,但如果出现更复杂的图例(例如多列),则必须意识到这一点以防万一出现问题。
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和文档。
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()
请注意,v3.4.3中缺少alignment
关键字参数。
(请参考此处)