Python matplolib图例如何缩短框架左边缘和标记之间的距离

deyfvvtc  于 2023-03-04  发布在  Python
关注(0)|答案(3)|浏览(163)

如问题所示,我正在尝试缩短图例框左边缘与标记之间的距离。x1c 0d1x
图中有当前的情节。我想找到一种方法:
1.保持frameon = True以便部分地掩蔽下面的点;
1.向左移动标记和标注以减小图例边缘和标记之间的距离
实际图例配置如下:

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)
pkln4tw6

pkln4tw61#

尝试使用负值borderpad。这可能会导致图例也向下移动,因此使用borderaxespad进行调整。
大概是这样的

leg = ax.legend( 
      fontsize=13, loc="lower left", frameon=True, 
      framealpha=1, handletextpad=-0.6, 
      labelspacing=0.08, borderpad=-0.5, borderaxespad=1)

请注意,我使用的不是绝对位置,而是"lower left"作为图例位置。否则,整个"用borderpadborderaxspread移动东西"就会变得不可靠(我知道,这不是一个非常精确的解释:)。

cyvaqqii

cyvaqqii2#

您可以尝试添加以下参数并根据您的选择更改值

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)

6tdlim6h

6tdlim6h3#

多亏了SheldoreSinan Kurmus,解决方案结合了您的两个建议:

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)

我选择了希南Kurmus的答案作为最好的支持他的排名。
此答案以edit的形式发布,以解决Python matplolib图例如何通过CC BY-SA 4.0下的OP Giuseppe Angora来缩短框架左边缘和标记之间的距离的问题。

相关问题