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 图例标记仅一次的主要内容,如果未能解决你的问题,请参考以下文章