在matplotlib中,如何调整图例标题的对齐方式?它总是居中,但我需要它与图例框保持对齐.我试图更改标题的文本艺术家的对齐方式,但没有任何效果.有关详细信息,请参阅以下示例
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()
Run Code Online (Sandbox Code Playgroud)
问题归结为什么和谁控制标题对齐的锚点?将对齐更改为"右"或"中心"具有明显的效果.第二个观察:对于长标题字符串,锚点移动到图例框的左边界...
Imp*_*est 12
您可以对齐完整的图例框设置leg._legend_box.align.这会对齐图例框内的所有内容,但效果是在框的两侧而不是中心处具有标题的效果.
左对齐
leg = plt.legend(title="Title")
leg._legend_box.align = "left"
Run Code Online (Sandbox Code Playgroud)
右对齐
leg = plt.legend(title="Title")
leg._legend_box.align = "right"
Run Code Online (Sandbox Code Playgroud)
我认为您需要Text使用该set_position((x, y))方法替换对象.单位为x和y像素,因此您必须尝试使用正确的值,或使用Transform.我不确定哪种组合Transforms可能最有用.
简而言之,这样的事情可能有用:
l.get_title().set_position((-10, 0)) # -10 is a guess
Run Code Online (Sandbox Code Playgroud)
小智 6
从 matplotlib 3.6 版本开始,就有了这个alignment参数。在文档中您可以阅读:
对齐方式{'center', 'left', 'right'}, 默认: 'center'
图例标题和条目框的对齐方式。> 条目作为一个块对齐,以便标记始终对齐。
您现在只需致电
plt.legend(title='Title', alignment='left')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10436 次 |
| 最近记录: |