matplotlib传奇标记只有一次

car*_*arl 236 python matplotlib

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

x = 10
y = 100
plot(x, y, "k*", label="Global Optimum")
legend()
Run Code Online (Sandbox Code Playgroud)

但是,这会导致图例在图例中放置两次星形,如下所示:

* * Global Optimum
Run Code Online (Sandbox Code Playgroud)

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

 *  Global Optimum
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

DSM*_*DSM 249

这应该工作:

legend(numpoints=1)
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果你添加线

legend.numpoints     : 1      # the number of points in the legend line
Run Code Online (Sandbox Code Playgroud)

到你的matplotlibrc文件,这将是新的默认值.

[另请参见散点图,具体取决于您的情节.]

API:链接到API文档

  • 散点图的选项是`scatterpoints = 1` (32认同)
  • 谢谢.我今天也碰到了这个.为什么这不是默认值? (7认同)
  • @DMS:我没见过.我的错.您还应该将其突出显示为代码,以使其更加明显. (3认同)
  • 有没有办法减少传奇点的面积? (2认同)
  • 最后,有一个计划numpoints = 1默认在matplotlib 2.0!好哇!https://github.com/matplotlib/matplotlib/issues/4854 (2认同)

mcg*_*non 25

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

from pylab import *
rcParams['legend.numpoints'] = 1
Run Code Online (Sandbox Code Playgroud)

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

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

import matplotlib as mpl
mpl.rcParams['legend.numpoints'] = 1
Run Code Online (Sandbox Code Playgroud)