在matplotlib中,如何调整 legend title 的对齐方式?它总是居中的,但我需要它与legend box左对齐。我尝试更改标题的Text artist的对齐方式,但没有效果。详细信息请参见以下示例:
from pylab import *
x = linspace(0, 1)
plot(x, x, label="1")
plot(x, x**2, label="2")
plot(x, x**3, label="3")
plot(x, sqrt(x), label="square root")
l = legend(title="Title", loc="best")
l.get_title().set_ha("left") # <== does not work
show()
问题归结为什么和谁控制标题对齐的锚点?将对齐更改为“右”或“中心”具有明显的效果。第二个观察:对于长标题字符串,锚点移动到图例框的左边框…
3条答案
按热度按时间l7mqbcuq1#
您可以对齐完整的图例框设置
leg._legend_box.align
。这将对齐图例框内的所有内容,但效果是希望标题位于框的两侧而不是中心。*左对齐
*右对齐
mm9b1k5b2#
我认为你需要使用
set_position((x, y))
方法来替换Text
对象。x
和y
的单位是像素,所以你必须试验什么值看起来合适,或者使用Transform
。我不确定Transforms
的哪种组合可能最有用。简而言之,这样的东西可能会起作用:
9q78igpj3#
从matplotlib 3.6版本开始,有
alignment
参数。在documentation中,你可以读到:对齐'center ',' left','right'},默认值:'中心'
图例标题和条目框的对齐方式。条目作为一个块〉对齐,以便标记始终对齐。
您现在只需调用