我有两个副区作为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), ...)
这工作, 但传说是左对齐,使禄指定图例框的左边缘/角落,而不是中心。 我搜索了诸如对齐 , 的HorizontalAlignment等关键字,但找不到任何。 我也试图获得“图例位置”,但传说没有一个* get_position()*方法。 我读到* bbox_to_anchor *,但在应用于图例无法理解它。 这似乎是传说中的轴来进行。
或者:我应该使用一个移动轴的传奇呢? 但随后,为什么摆在首位有图例? 而不知它必须能够“居中对齐”的人物传说,因为LOC =“中央下”做这一点。
谢谢你的帮助,
马丁
在这种情况下,您可以使用数字轴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()