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

4 python dictionary matplotlib legend python-3.x

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

进口

import numpy as np
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)

数据

x = np.linspace(0, 100, 501)
y = np.sin(x)
Run Code Online (Sandbox Code Playgroud)

图例参数

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

阴谋

if label is not None:
    plt.plot(x, y, label=label, **legend_dict)
else:
    plt.plot(x, y)
plt.show()
Run Code Online (Sandbox Code Playgroud)

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

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

为什么这个方法行不通?

Ken*_*yme 5

您正在尝试将图例 kwargs 传递给绘图函数。需要.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()
Run Code Online (Sandbox Code Playgroud)

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