如何在 matplotlib 图例标记之间指定 space

How to specify space between matplotlib legend markers

我正在查看 matplotlib api,但似乎无法找到更改图例标记之间的 space 的方法。我遇到了一种使用 handletextpad 更改标记及其相应句柄之间的 space 的方法,但我想更改每个标记之间的 space。

理想情况下,我希望标记与标记上方(或顶部)的标签相互接触。

我的传说:

我要建模的内容:

有办法吗?

我不确定这是否符合您的期望。我们使用标准功能创建了一个与您的目标相似的图表。由于我不知道代码和数据,我自定义了官方参考中的示例来创建它,使用 handletextpadcolumnspacing,并且由于数字是字体单位,所以我用负数实现了这一点值。

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(19680801)

fig, ax = plt.subplots(figsize=(8,8))
for color in ['tab:blue', 'tab:orange', 'tab:green']:
    n = 750
    x, y = np.random.rand(2, n)
    scale = 200.0 * np.random.rand(n)
    ax.scatter(x, y, c=color, s=scale, label=color.split(':')[1][0],
               alpha=0.5, edgecolors='none')
    
handlers, labels = ax.get_legend_handles_labels()
print(labels)

ax.legend(handletextpad=-1.2, columnspacing=-0.5, ncol=3,loc="upper left", bbox_to_anchor=(0.75, 1.08))
ax.grid(True)

plt.show()