代码之家  ›  专栏  ›  技术社区  ›  Nick X Tsui

图例()复制自身

  •  0
  • Nick X Tsui  · 技术社区  · 7 年前

    我的以下代码:

    导入numpy as np 从Matplotlib导入Pyplot作为plt 从matplotlib.pyplot将图例导入为图例 x=np.矩阵( [ [1,1,1,1], [2,2,2,2], [3,3,3,3], 【4、4、4、4】 ] ) Y=X.转置()) x x=x YY=Y+0.2 #网格垂直线: plt.plot(x,y,'b-o',label='data1') plt.plot(xx,yy,'r-*',label='data2') 图例() 请显示())

    生成的数字看起来像

    我想做两件事:

    1. 阻止图例自行复制;它只应显示每个标签一次;类似于
        1. 很好地放置图例;假设将其放在右上角,与图形内容没有重叠
          1. 非常感谢简单/优雅的解决方案。非常感谢。

    生成的数字看起来像

    enter image description here

    我想做两件事:

    1. 阻止图例自行复制;它只应显示每个标签一次;类似于

    enter image description here

    1. 很好地放置图例;假设将其放在右上角,与图形内容没有重叠

    非常感谢简单/优雅的解决方案。谢谢。

    2 回复  |  直到 7 年前
        1
  •  2
  •   Gabriel Jablonski    7 年前

    x (因此,当您调用 plot() 在它上面,它相当于调用 绘图() 在多个一维集合上,所以您要为这些绘图中的每一个创建一个标签。

    避免这种情况的一种方法是将绘图分配给一个变量,然后只为每个变量的前一个插入一个图例。

    lines = plt.plot(x, y, 'b-o')
    other_lines = plt.plot(xx, yy, 'r-*')
    plt.legend([lines[0], other_lines[0]], ['data1', 'data2'])
    

    对于图例定位,请查看 this 或者在 documentation .

        2
  •  0
  •   taras Hardik Kamdar    7 年前

    因为你的 x y 是矩阵,每一个矩阵行都得到相同的标签,标签在图例中重复。

    解决方案可能如下所示:

    for i in range(x.size[0]):
        plt.plot(x[i], y[i], label='data1' if i == 0 else None)
        plt.plot(xx[i], yy[i], label='data2' if i == 0 else None)