【问题标题】:Whitespace in pyplot legend entry?pyplot图例条目中的空格?
【发布时间】:2025-12-21 00:45:11
【问题描述】:

我想在图例条目的末尾和图例边框之间添加一些间距。我已经尝试使用 pyplot.legend 的参数,但我还没有找到有效的组合。这是一个最小的工作示例:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0.0,1.0,10)
y = x

fig = plt.figure()
p, = plt.plot(x,y,'-o')
plt.legend([p],['$y = x$'], loc='best')
plt.show()

我试过了

plt.legend([p],['$y = x\/$'], loc='best')
plt.legend([p],['$y = x{ }$'], loc='best')
plt.legend([p],['$y = x\:$'], loc='best')
plt.legend([p],['$y = x$ '], loc='best')

但它们都不起作用。 pyplot 似乎太聪明了,它会删除任何尾随空格。有没有办法做到这一点?

举个例子来说明我为什么要这样做,这是为了平衡两边的空间,在图例中使用一个标记而不是两个标记,请参见下面的示例。 W-YExp.旁边的空间比左边的空间小很多。

【问题讨论】:

    标签: python matplotlib whitespace legend


    【解决方案1】:

    我认为您可以通过 kwargs borderpadhandletextpad 的组合获得您想要的。

    (doc)

    【讨论】:

    • 这可行;但是,borderpad 一直添加填充。然后需要在handletextpad 之上使用handletextheightlabelspacing。我真的希望有一个简单的解决方法,可以在条目末尾添加一个空白字符。
    • @William 图例代码相当复杂,有很多角落和角落,很可能会有一个参数来准确地调整你想要的我不知道的东西。可能值得花一些时间在代码中挖掘。你用的是什么版本的mpl?
    • @William 有一个关闭图例框架的狡猾解决方案,所以你看不出来;)我会专门看看边界框是如何生成的,我认为点艺术家要宽得多比看起来是什么给了你额外的填充。
    • 我设法让它工作(通过蛮力试错)。最后我只是使用了图例kwargs。有趣的是,如果你不更改numpoints = 1,你可以在末尾添加空格,例如plt.legend([p],['$y = x$ ']),并且它可以工作。如果将numpoints 减为 1,则空间不再有效。
    最近更新 更多