Python图例:标记出现两次

时间:2012-10-04 17:32:54

标签: python matplotlib legend

使用matplotlib制作的图例的简单绘图产生以下内容:我的图例标签左侧的标记出现两次。任何人都可以知道为什么以及如何避免这个问题?我的命令是:

pl.plot(x1,x2,'g^', label='regional')
pl.plot(y1,y2,'bo', label='local')
pl.legend( loc='upper left' )

谢谢

1 个答案:

答案 0 :(得分:32)

您可以使用numpoints关键字更改图例中显示的标记数量:

import matplotlib.pyplot as plt
import numpy as np
x1 = y1 = np.linspace(0, 10, 100)
x2 = np.sin(x1)
y2 = np.cos(y1)
plt.plot(x1,x2,'g--^', label='regional')
plt.plot(y1,y2,'b-o', label='local')
plt.legend( loc='upper left', numpoints = 1 )
plt.show()

enter image description here


我相信标记出现两次(默认情况下)的原因是因为matplotlib试图显示标记之间的线型连接符。没有连接器时看起来有点奇怪。

如果情节有虚线和虚线,

plt.plot(x1,x2,'g--^', label='regional')
plt.plot(y1,y2,'b-o', label='local')

然后传说看起来像这样:

enter image description here

现在您可以在图例中(以及图表上)看到标记之间的线条效果。


如果您根本不想要任何图例句柄,则可以使用

plt.legend(..., handlelength=0)

例如,

import numpy as np
import matplotlib.pyplot as plt

x1 = y1 = np.linspace(0, 10, 100)
x2 = np.sin(x1)
y2 = np.cos(y1)
plt.plot(x1,x2,'g--^', label='regional')
plt.plot(y1,y2,'b-o', label='local')
plt.legend(loc='best', numpoints=1, handlelength=0)
plt.show()

enter image description here

您可以使用

plt.legend(loc='best', numpoints=1, handlelength=0, 
           markerscale=0, handletextpad=0)

也可以删除图例标记。