matplotlib 图例标记仅一次

Posted

技术标签:

【中文标题】matplotlib 图例标记仅一次【英文标题】:matplotlib Legend Markers Only Once 【发布时间】:2011-09-03 01:22:56 【问题描述】:

我经常在 matplotlib 图上绘制一个点:

x = 10
y = 100
plot(x, y, "k*", label="Global Optimum")
legend()

但是,这会导致图例在图例中添加两次星号,如下所示:

* * Global Optimum

当我真的希望它看起来像:

 *  Global Optimum

我该怎么做?

【问题讨论】:

我希望我能多次支持这个问题。我讨厌默认的numpoints=2 约定,看到有人已经花时间询问并得到答案,我松了一口气。 注意:散点图的选项是scatterpoints=1 【参考方案1】:

这应该可行:

legend(numpoints=1)

顺便说一句,如果您添加该行

legend.numpoints     : 1      # the number of points in the legend line

到你的 matplotlibrc 文件,那么这将是新的默认值。

[另请参阅散点,具体取决于您的情节。]

API:Link to API docs

【讨论】:

谢谢。我今天也遇到了这个。为什么这不是默认值? 你能添加一个指向 api 的链接吗? matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.legend我可以自己编辑它,但这似乎很粗鲁。 有什么办法可以减少图例上点的面积吗? @DMS:我没有看到。我的错。您还应该将其突出显示为代码以使其更加可见。 终于,matplotlib 2.0 计划将 numpoints=1 设为默认值!嘘! github.com/matplotlib/matplotlib/issues/4854【参考方案2】:

我喜欢在每个 python 脚本中动态更改我的 matplotlib rc 参数。为了实现这个目标,我只是在我的 python 文件的开头使用了类似的东西。

from pylab import *
rcParams['legend.numpoints'] = 1

这将适用于从我的 python 文件生成的所有图。

编辑:对于那些不喜欢导入 pylab 的人,长答案是

import matplotlib as mpl
mpl.rcParams['legend.numpoints'] = 1

【讨论】:

以上是关于matplotlib 图例标记仅一次的主要内容,如果未能解决你的问题,请参考以下文章

matplotlib图例超出窗口区域[重复]

Matplotlib - 全局图例和标题旁边的子图

Matplotlib:从头开始制作彩色标记图例

Matplotlib 图例:标记上方的标签

Python-Matplotlib 14 图例legend

Matplotlib:在图例中移动标记位置