python - matplotlib 为单个散点图添加具有多个条目的图例
问题描述
我正在为如下所示的数据集制作散点图:
x = [1, 1, 2, 2, 3, 3, 4, 4]
y = [1, 2, 3, 4, 1, 2, 3, 4]
labels = [1, 3, 0, 2, 2, 1, 0, 3]
colors = np.array(plt.rcParams['axes.prop_cycle'].by_key()['color'])
plt.scatter(x, y, color=colors[labels])
如果我调用plt.legend
,对于整个数据集,将只显示一个条目,并带有第一个符号。如何创建一个包含所有四个元素的图例,就像我绘制了四个单独的数据集一样显示?
解决方案
您可以为一组标签绘制空列表:
for l in set(labels):
plt.scatter([],[], color=colors[l], label=l)
plt.legend()