matplotlib 图例标记只显示一次

241 投票
2 回答
62901 浏览
提问于 2025-04-16 18:26

我经常在matplotlib图表上绘制一个点,使用的是:

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

但是这样做会导致图例中出现两个星星,结果看起来像这样:

* * Global Optimum

而我其实想要的效果是:

 *  Global Optimum

我该怎么做呢?

2 个回答

24

我喜欢在每个Python脚本中动态地更改我的matplotlib设置。为了实现这个目标,我通常在我的Python文件开头使用类似下面的代码。

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

这样做会对我在这个Python文件中生成的所有图表生效。

补充说明:对于那些不喜欢导入pylab的人,下面是更详细的答案。

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

这个应该可以正常工作:

legend(numpoints=1)

顺便说一下,如果你在你的matplotlibrc文件中添加这一行:

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

那么这将成为新的默认设置。

[另外,关于散点图,你可以根据你的图表来调整。]

API文档:点击这里查看API文档

撰写回答