matplotlib:图形图例与 mode="expand" 问题
matplotlib: Figure Legend with mode="expand" problem
我在定义 fig.legend() 时尝试使用 mode="expand"。
我希望它扩展到我正在使用 ax.get_position() 检索的 xaxis 范围。
我遇到了 2 个问题:
- 它在左轴上正确对齐,但由于某种原因在右轴上对齐过度。
- 图例的 'upper center' 与我的 4 元组 bbox 的上中心不对齐。我必须手动捏造数字才能做到这一点。
见下面的代码。
(Matplotlib 3.1.0; Python 3.7; Numpy 1.16.4)
import matplotlib
import numpy as np
fig, ax = plt.subplots()
x = np.linspace(-2*np.pi,2*np.pi,100)
ax.plot(x,np.sin(x), label='sine')
ax.plot(x,np.cos(x), label='cos')
ax.plot(x,np.arctan(x), label='arctan')
axbox = ax.get_position()
fig.legend(loc='upper center', bbox_to_anchor=(axbox.x0, axbox.y0, axbox.x1, axbox.y0),
bbox_transform=fig.transFigure, ncol=3, title='fig leg 3 expand',
prop={'size': 'medium'}, borderaxespad=0, mode="expand",
)
resulting plot
在这种情况下,我认为我们可以更改对轴的变换参考并将 xy 值设置为 0 到 1 的范围。这是否符合您的意图,我不确定 LHS 和 RHS。
fig.legend(loc='upper center', bbox_to_anchor=(0,0,1,0.15),
bbox_transform=ax.transAxes, ncol=3, title='fig leg 3 expand',
prop={'size': 'medium'}, borderaxespad=0, mode='expand',
)
我在定义 fig.legend() 时尝试使用 mode="expand"。
我希望它扩展到我正在使用 ax.get_position() 检索的 xaxis 范围。
我遇到了 2 个问题:
- 它在左轴上正确对齐,但由于某种原因在右轴上对齐过度。
- 图例的 'upper center' 与我的 4 元组 bbox 的上中心不对齐。我必须手动捏造数字才能做到这一点。
见下面的代码。 (Matplotlib 3.1.0; Python 3.7; Numpy 1.16.4)
import matplotlib
import numpy as np
fig, ax = plt.subplots()
x = np.linspace(-2*np.pi,2*np.pi,100)
ax.plot(x,np.sin(x), label='sine')
ax.plot(x,np.cos(x), label='cos')
ax.plot(x,np.arctan(x), label='arctan')
axbox = ax.get_position()
fig.legend(loc='upper center', bbox_to_anchor=(axbox.x0, axbox.y0, axbox.x1, axbox.y0),
bbox_transform=fig.transFigure, ncol=3, title='fig leg 3 expand',
prop={'size': 'medium'}, borderaxespad=0, mode="expand",
)
resulting plot
在这种情况下,我认为我们可以更改对轴的变换参考并将 xy 值设置为 0 到 1 的范围。这是否符合您的意图,我不确定 LHS 和 RHS。
fig.legend(loc='upper center', bbox_to_anchor=(0,0,1,0.15),
bbox_transform=ax.transAxes, ncol=3, title='fig leg 3 expand',
prop={'size': 'medium'}, borderaxespad=0, mode='expand',
)