Python:Matplotlib图例与自定义labelspace

2024-09-27 23:24:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道在Python的matlplotlib legend函数中,我们可以使用“labelspace”来调整标签之间的间距,例如:

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

但是,我是否可以在标签之间有一个更自定义的间距,例如前两个标签之间的间距是2,第二个和第三个标签之间的间距是3,依此类推?在

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


Tags: 函数绘图标签ax线条legend间距lgd
1条回答
网友
1楼 · 发布于 2024-09-27 23:24:27

似乎没有简单的方法可以做到这一点,因为plt.legend使用VPacker来管理图例中的条目:https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/legend.py#L713

VPacker对所有条目只支持一个sephttp://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

相关问题 更多 >

    热门问题