Matplotlib图例:如何分配多个分散点值

S K*_*ulk 4 python plot matplotlib legend markers

我在python中使用matplotlib库生成发布质量的xy散点图。我遇到了一个关于图例中标记的问题。我正在绘制2个不同的xy-scatter系列;一个是一组xy点,它们形成一条曲线,另一个是单个xy点。

我希望图例为“曲线”显示3个标记,为单个点显示1个标记。我知道如何更改图例标记的数量的唯一方法是在声明图例时使用“ scatterpoints”参数。然而,这种说法将标记为数量在传说系列,我不知道如何改变每个图例项独立

遗憾的是,我不能以新用户身份发布图片,但希望此说明就足够了。有没有一种方法可以使用matplotlib为每个图例条目分别设置散点值?

编辑:这是显示具有不同散点值的图像的链接。

散点= 3:http//imgur.com/8ONAT

分散点= 1:http//imgur.com/TFcYV

希望这可以使问题更加清楚。

HYR*_*YRY 5

您可以在图例中获得该行,并自行更改:

import numpy as np
import pylab as pl
x = np.linspace(0, 2*np.pi, 100)
pl.plot(x, np.sin(x), "-x", label=u"sin")
pl.plot(x, np.random.standard_normal(len(x)), 'o', label=u"rand")
leg = pl.legend(numpoints=3)
l = leg.legendHandles[1]
l._legmarker.set_xdata(l._legmarker.get_xdata()[1:2])
l._legmarker.set_ydata(l._legmarker.get_ydata()[1:2])
##or
#l._legmarker.set_markevery(3)
pl.show()
Run Code Online (Sandbox Code Playgroud)

Legend.legendHandles是图例中所有行的列表,该行的_legmarker属性是标记。

您可以调用set_markevery(3)或set_xdata()和set_ydata()来更改标记数。

在此处输入图片说明