seen = set()
for x, y, label in zip(xs, ys, labels):
    plt.scatter(x, y, c=label_dict.get(label), label=legend_dict.get(label) if
        label not in seen else None)
seen.add(label)
Изобразить легенду без повторов