首页 文章

Python图例:标记出现两次[重复]

提问于
浏览
14

这个问题在这里已有答案:

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

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

谢谢

1 回答

  • 30

    您可以使用 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)
    

    也删除图例标记 .

相关问题