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)
为什么这个方法行不通?
您正在尝试将图例 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 就可以了,因为这是默认值!