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

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

进口

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

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

最佳答案 您正试图将图例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()

注意也不需要if语句 – 标签为None是好的,因为这是默认值!

点赞