我在python中使用matplotlib库来生成出版品质的xy散点图.我遇到了关于图例中标记的问题.我正在绘制2个不同的xy-scatter系列;一个是形成曲线的一组xy点,另一个是单个xy点.
我希望图例中的“曲线”显示3个标记,单个点显示1个标记.我知道如何更改图例标记数量的唯一方法是在声明图例时使用“scatterpoints”参数.但是,此参数设置图例中所有系列的标记数,并且我不确定如何单独更改每个图例条目.
遗憾的是,我不能以新用户的身份发布图片,但希望这种描述已经足够了.有没有办法使用matplotlib为每个图例条目单独设置散点值?
编辑:以下链接显示散点图的不同值的图像.
希望这使问题更加明确.
解决方法:
你可以在传奇中获得这一行,并自己更改:
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()
Legend.legendHandles是图例中所有行的列表,行的_legmarker属性是标记.
你可以调用set_markevery(3)或set_xdata()& set_ydata()改变标记的数量.
标签:python,matplotlib,plot,legend,markers