我正试图用这个片段将这个传说添加到我的情节中:
import matplotlib.pylab as plt
fig = plt.figure()
axes = fig.add_axes([0.1, 0.1, 0.8, 0.8]) # left, bottom, width, height (range 0 to 1)
axes.set_xlabel('x (m)')
axes.set_ylabel('y (m)')
for i, representative in enumerate(representatives):
axes.plot([e[0] for e in representative], [e[1] for e in representative], color='b', label='Representatives')
axes.scatter([e[0] for e in intersections], [e[1] for e in intersections], color='r', label='Intersections')
axes.legend()
我以这个阴谋告终
显然,这些项目在情节上是重复的。如何更正此错误?
正如docs所说,虽然很容易错过:
所以如果我在一个循环中绘制相似的线,并且我只想要图例中的一条示例线,我通常会做如下操作
其中
i
是我的循环索引。看起来并不像单独构建它们那么好,但是我经常希望标签逻辑尽可能接近于线图。
(请注意,
matplotlib
开发人员自己倾向于使用"_nolegend_"
来显式地表示。)下面是一种在正常分配标签后删除重复图例项的方法:
结果如下: 左边是上面脚本的结果。右边的图例调用已替换为
axes.legend()
。优点是,您可以遍历大部分代码,只需正常地分配标签,而不必担心内联循环或
if
s。您还可以将其构建为legend或类似的包装器。基于the answer by EL_DON,这里有一个用于绘制没有重复标签的图例的通用方法:
示例用法:(open in ^{} )
相关问题 更多 >
编程相关推荐