2024-09-27 23:24:27 发布
网友
我知道在Python的matlplotlib legend函数中,我们可以使用“labelspace”来调整标签之间的间距,例如:
lgd = ax.legend(..., labelspacing=2)
但是,我是否可以在标签之间有一个更自定义的间距,例如前两个标签之间的间距是2,第二个和第三个标签之间的间距是3,依此类推?在
这样做可以让我很好地将标签与绘图中的线条对齐(在绘图之外)。在
似乎没有简单的方法可以做到这一点,因为plt.legend使用VPacker来管理图例中的条目:https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/legend.py#L713
plt.legend
VPacker
VPacker对所有条目只支持一个sep: http://matplotlib.org/api/offsetbox_api.html#matplotlib.offsetbox.VPacker
sep
你有没有想过手工画这个传说? (例如,用patches.Rectangle绘制一个白框,用plt.text绘制文本) 这可能也会使项目与绘图内容更容易对齐。 例如,像这样:
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')
似乎没有简单的方法可以做到这一点,因为
plt.legend
使用VPacker
来管理图例中的条目:https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/legend.py#L713VPacker
对所有条目只支持一个sep
: http://matplotlib.org/api/offsetbox_api.html#matplotlib.offsetbox.VPacker你有没有想过手工画这个传说? (例如,用
patches.Rectangle
绘制一个白框,用plt.text
绘制文本) 这可能也会使项目与绘图内容更容易对齐。 例如,像这样:相关问题 更多 >
编程相关推荐