我想在输出绘图之前编写一个接受图例参数字典的函数。我在下面列举了一个小例子。
进口
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
为什么这种方法不起作用?
答案 0 :(得分:3)
您应该在调用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()
给出了:
答案 1 :(得分:3)
您正试图将图例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,因为这是默认值!