如何定位和对齐matplotlib人物传奇?(How to position and align a

2019-07-05 09:38发布

我有两个副区作为2行1列的图。 我可以添加一个好看的数字与传说

fig.legend((l1, l2), ['2011', '2012'], loc="lower center", 
           ncol=2, fancybox=True, shadow=True, prop={'size':'small'})

然而,该说明被定位在该的中心和不低于的中心为我想拥有它。 现在,我可以得到我的轴坐标

axbox = ax[1].get_position()

在理论上我应该能够通过指定一个元组关键字定位的传说:

fig.legend(..., loc=(axbox.x0+0.5*axbox.width, axbox.y0-0.08), ...)

这工作, 传说是左对齐,使指定图例框的左边缘/角落,而不是中心。 我搜索了诸如对齐的Horizo​​ntalAlignment等关键字,但找不到任何。 我也试图获得“图例位置”,但传说没有一个* get_position()*方法。 我读到* bbox_to_anchor *,但在应用于图例无法理解它。 这似乎是传说中的轴来进行。

或者:我应该使用一个移动轴的传奇呢? 但随后,为什么摆在首位有图例? 而不知它必须能够“居中对齐”的人物传说,因为LOC =“中央下”做这一点。

谢谢你的帮助,

马丁

Answer 1:

在这种情况下,您可以使用数字轴legend的方法。 在这两种情况下, bbox_to_anchor是关键。 正如你已经注意到bbox_to_anchor指定坐标的元组(或箱)放置图例。 当你使用bbox_to_anchor想到的location kwarg作为控制水平和垂直对齐。

所不同的是坐标的元组只是是否被解释为轴或图形的坐标。

作为使用图例的示例:

import numpy as np
import matplotlib.pyplot as plt

fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True)

x = np.linspace(0, np.pi, 100)

line1, = ax1.plot(x, np.cos(3*x), color='red')
line2, = ax2.plot(x, np.sin(4*x), color='green')

# The key to the position is bbox_to_anchor: Place it at x=0.5, y=0.5
# in figure coordinates.
# "center" is basically saying center horizontal alignment and 
# center vertical alignment in this case
fig.legend([line1, line2], ['yep', 'nope'], bbox_to_anchor=[0.5, 0.5], 
           loc='center', ncol=2)

plt.show()

作为使用轴方法的一个例子,尝试是这样的:

import numpy as np
import matplotlib.pyplot as plt

fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True)

x = np.linspace(0, np.pi, 100)

line1, = ax1.plot(x, np.cos(3*x), color='red')
line2, = ax2.plot(x, np.sin(4*x), color='green')

# The key to the position is bbox_to_anchor: Place it at x=0.5, y=0
# in axes coordinates.
# "upper center" is basically saying center horizontal alignment and 
# top vertical alignment in this case
ax1.legend([line1, line2], ['yep', 'nope'], bbox_to_anchor=[0.5, 0], 
           loc='upper center', ncol=2, borderaxespad=0.25)

plt.show()



文章来源: How to position and align a matplotlib figure legend?