Python:带自定义labelspacing的Matplotlib图例

时间:2016-07-12 05:01:55

标签: python matplotlib

我知道在Python的matlplotlib图例功能中,我们可以使用“labelspacing”调整标签之间的间距,例如:

lgd = ax.legend(..., labelspacing=2)

但是我可以在标签之间有更多自定义间距,例如前两个标签之间的空间 2 ,第二个和第三个标签之间的空间是 3 ,等等?

这样做可以让我很好地(在情节之外)将标签与我的情节中的线对齐。

1 个答案:

答案 0 :(得分:1)

看起来没有简单的方法,因为plt.legend使用VPacker来管理图例中的条目:https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/legend.py#L713

VPacker仅支持所有条目的sep个: http://matplotlib.org/api/offsetbox_api.html#matplotlib.offsetbox.VPacker

您是否考虑过手动绘制图例? (例如,绘制带有patches.Rectangle的白色框和带有plt.text的文本) 这可能也会使项目与你的情节内容更加容易。 例如,像这样:

import matplotlib.pyplot as plt
from matplotlib import patches

rect = patches.Rectangle((0.7, 0.35), 0.2, 0.3, facecolor='white')
plt.gca().add_patch(rect)
plt.text(0.75, 0.58, 'my')
plt.text(0.75, 0.5, 'custom')
plt.text(0.75, 0.42, 'legend')

custom legend