代码之家  ›  专栏  ›  技术社区  ›  user7345804

如何将字典kwargs输入matplotlib图例例程?

  •  4
  • user7345804  · 技术社区  · 6 年前

    我想编写一个函数,在输出绘图之前接受图例参数字典。下面我举了一个小例子。

    进口

    import numpy as np
    import matplotlib.pyplot as plt
    

    数据

    x = np.linspace(0, 100, 501)
    y = np.sin(x)
    

    图例参数

    legend_dict = dict(ncol=1, loc='best', fancybox=True, shadow=True)
    label = 'xy data sample'
    # label = None
    

    情节

    if label is not None:
        plt.plot(x, y, label=label, **legend_dict)
    else:
        plt.plot(x, y)
    plt.show()
    

    这给了我以下错误(可以通过取消注释来避免 label=None )。

        plt.plot(x, y, label=label, **legend_dict) # this line
    AttributeError: Unknown property shadow # this error
    

    为什么这种方法不起作用?

    2 回复  |  直到 6 年前
        1
  •  4
  •   Ken Syme    6 年前

    您正在尝试将图例kwargs传递给plot函数。需要打电话 .legend() 分别地。

    import numpy as np
    import matplotlib.pyplot as plt
    
    x = np.linspace(0, 100, 501)
    y = np.sin(x)
    
    legend_dict = dict(ncol=1, loc='best', fancybox=True, shadow=True)
    label = 'xy data sample'
    #label = None
    
    plt.plot(x, y, label=label) 
    plt.legend(**legend_dict)
    plt.show()
    

    注意:也不需要if语句-标签为None就可以了,因为这是默认值!

        2
  •  4
  •   DavidG    6 年前

    您应该在调用中指定图例的属性 plt.legend() ,不在 plt.plot() :

    x = np.linspace(0, 100, 501)
    y = np.sin(x)
    
    legend_dict = dict(ncol=1, loc='best', fancybox=True, shadow=True)
    label = 'xy data sample'
    
    plt.plot(x, y, label=label)
    plt.legend(**legend_dict)
    
    plt.show()
    

    其中给出:

    enter image description here