Python matplolib图例如何减少帧左边缘和标记之间的距离
正如问题所暗示的,我正试图缩小图例框架左边缘和标记之间的距离 图中是当前的绘图。我想找到一种方法: 1) 保持Python matplolib图例如何减少帧左边缘和标记之间的距离,python,python-3.x,matplotlib,legend,Python,Python 3.x,Matplotlib,Legend,正如问题所暗示的,我正试图缩小图例框架左边缘和标记之间的距离 图中是当前的绘图。我想找到一种方法: 1) 保持frameon=True,以部分掩盖基础点 2) 向左移动标记和标签,减少图例边和标记之间的距离 实际图例配置如下所示: leg = ax.legend(handles=legend_elements, fontsize=13, loc=(0.03, 0.01), frameon=True, framealpha=0.5, handletextpad=-0.6
frameon=True
,以部分掩盖基础点
2) 向左移动标记和标签,减少图例边和标记之间的距离
实际图例配置如下所示:
leg = ax.legend(handles=legend_elements,
fontsize=13, loc=(0.03, 0.01), frameon=True,
framealpha=0.5, handletextpad=-0.6,
labelspacing=0.08, borderpad=0)
编辑:解决方案
感谢两位提供了最快的答案,解决方案结合了您的两个建议:
leg = ax.legend(handles=legend_elements,
fontsize=13, loc=(0.03, 0.01), frameon=True,
framealpha=0.5, handletextpad=0.,
labelspacing=0.08, borderpad=0.,
handlelength=1.2, borderaxespad=1)
我选择Sinan Kurmus answer作为最佳答案以支持他的排名您可以尝试添加以下参数,并根据您的选择更改值
handlelength=1
示例
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(9, 3))
np.random.seed(10)
# WITHOUT handlelength
ax1.plot(np.random.randint(0, 10, 5), np.random.randint(0, 10, 5), 'bo', label='data1')
ax1.plot(np.random.randint(0, 10, 5), np.random.randint(0, 10, 5), 'rs', label='data2')
leg = ax1.legend(fontsize=19, loc=(0.03, 0.01), frameon=True,
framealpha=0.5, handletextpad=0.5,
labelspacing=0.08, borderpad=0.0)
# WITH handlelength
ax2.plot(np.random.randint(0, 10, 5), np.random.randint(0, 10, 5), 'bo', label='data1')
ax2.plot(np.random.randint(0, 10, 5), np.random.randint(0, 10, 5), 'rs', label='data2')
leg = ax2.legend(fontsize=19, loc=(0.03, 0.01), frameon=True,
framealpha=0.5, handletextpad=0.5,
labelspacing=0.08, borderpad=0.0, handlelength=1)
尝试为
边框使用负值。这可能会导致图例向下移动,因此使用borderaxespad
进行调整
大概是这样的:
leg = ax.legend(
fontsize=13, loc="lower left", frameon=True,
framealpha=1, handletextpad=-0.6,
labelspacing=0.08, borderpad=-0.5, borderaxespad=1)
请注意,我使用了“左下角”
作为图例位置,而不是绝对位置。否则整个“用borderpad
和borderaxspread
移动东西”就会变得不可靠(我知道这不是一个非常精确的解释:)