如何在 matplotlib 图例标记之间指定 space
How to specify space between matplotlib legend markers
我正在查看 matplotlib api,但似乎无法找到更改图例标记之间的 space 的方法。我遇到了一种使用 handletextpad
更改标记及其相应句柄之间的 space 的方法,但我想更改每个标记之间的 space。
理想情况下,我希望标记与标记上方(或顶部)的标签相互接触。
我的传说:
我要建模的内容:
有办法吗?
我不确定这是否符合您的期望。我们使用标准功能创建了一个与您的目标相似的图表。由于我不知道代码和数据,我自定义了官方参考中的示例来创建它,使用 handletextpad
和 columnspacing
,并且由于数字是字体单位,所以我用负数实现了这一点值。
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()
我正在查看 matplotlib api,但似乎无法找到更改图例标记之间的 space 的方法。我遇到了一种使用 handletextpad
更改标记及其相应句柄之间的 space 的方法,但我想更改每个标记之间的 space。
理想情况下,我希望标记与标记上方(或顶部)的标签相互接触。
我的传说:
我要建模的内容:
有办法吗?
我不确定这是否符合您的期望。我们使用标准功能创建了一个与您的目标相似的图表。由于我不知道代码和数据,我自定义了官方参考中的示例来创建它,使用 handletextpad
和 columnspacing
,并且由于数字是字体单位,所以我用负数实现了这一点值。
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()