xs = [1, 2, 1, 4, 3, 2]
ys = [1, 3, 2, 2, 3, 1]
labels = [1, 1, 0, 2, 1, 3]
label_dict = {(0): 'r', (1): 'k', (2): 'b', (3): 'g'}
legend_dict = {(0): 'foo', (1): 'bar', (2): 'baz', (3): 'biff'}
seen = set()
for x, y, label in zip(xs, ys, labels):
    if label not in seen:
        plt.scatter(x, y, c=label_dict.get(label), label=legend_dict.get(label)
            )
else:
    plt.scatter(x, y, c=label_dict.get(label))
seen.add(label)
plt.legend()
plt.show()
Depict legend without repeats