首页 > 解决方案 > 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,对于整个数据集,将只显示一个条目,并带有第一个符号。如何创建一个包含所有四个元素的图例,就像我绘制了四个单独的数据集一样显示?

可能相关:具有多个图例条目的 Matplotlib 直方图
基于:Matplotlib,如何循环?

标签: pythonmatplotliblegend

解决方案


您可以为一组标签绘制空列表:

for l in set(labels):
    plt.scatter([],[], color=colors[l], label=l)
plt.legend()

推荐阅读