以下是情况的简化情节:
我希望能够为一组不同的标记设置一个标签,而不是让每个数据点标记都有一个单独的标记。我希望能够有一个像:
这样的传奇<triangle> <square> <hexagon> <diamond> <circle> Shotcrete strength data points
<green line> 10 minute strength
<blue line> 60 minute strength
<yellow line> 1 day strength
<orange line> 7 day strength
<red line> 28 day strength
我想这样做,因为在最终的情节中,我将有三组数据点,并显示18(3组* 6点/组)标记/标签组合将是凌乱的。
我正在使用Matplotlib和Python 2.7。
答案 0 :(得分:3)
注意:这个答案可以作为正确答案的指南 - 但它并没有解决上述问题。有关Patch集合在matplotlib中不受支持的问题,请参阅下面的编辑。
如果您想要完全自定义,可以使用所谓的代理艺术家:
from pylab import *
p1 = Rectangle((0, 0), 1, 1, fc="r")
p2 = Circle((0, 0), fc="b")
p3 = plot([10,20],'g--')
legend([p1,p2,p3], ["Red Rectangle","Blue Circle","Green-dash"])
show()
在这里,您可以指定完全您想要的图例,甚至使用非标准的绘图形状(补丁)。
修改:此方法存在一些问题,matplotlib only supports these Artists in a legend没有调整。对于matplotlib v1.0及更早版本,支持的艺术家如下。
Line2D
Patch
LineCollection
RegularPolyCollection
CircleCollection
您对多个散点图的请求将使用Patch Collection完成,上面不支持。理论上与v1.1,这是可能的,但我不知道如何。