Python 为plt散点图中的每个标签指定不同的颜色

Python 为plt散点图中的每个标签指定不同的颜色,python,matplotlib,Python,Matplotlib,我正在用python绘制这个散点图,我希望为每个标签绘制不同对比色的点。每个标签都有多个点 看起来它可能是一个需要输入来注释的东西,但我不太确定如何注释,因为我一直无法找到它: for i, label in enumerate(labels): x, y = low_dim_embs[i, :] plt.scatter(x, y) plt.annotate(label, xy=(x, y), xyt

我正在用python绘制这个散点图,我希望为每个标签绘制不同对比色的点。每个标签都有多个点

看起来它可能是一个需要输入来注释的东西,但我不太确定如何注释,因为我一直无法找到它:

  for i, label in enumerate(labels):
    x, y = low_dim_embs[i, :]
    plt.scatter(x, y)
    plt.annotate(label,
                 xy=(x, y),
                 xytext=(5, 2),
                 textcoords='offset points',
                 ha='right',
                 va='bottom')
我可以将上述命令替换为:

plt.scatter(x, y, color=mycolors)
这将给我手动指定的颜色,但对于每个条目,每个条目都有许多重复。有自动方式吗

我的数据集如下所示:

x,y,label
1,2,label1
1,3,label1
2,-1,label1
4,1,label2
5,1,label2
...

属于labelx的每个坐标应具有相同的颜色,我可能还需要图例中的颜色

解决将相同标签添加到相同颜色的问题的方法是编写一个脚本,生成一个颜色列表,为数据中的每个唯一值分配一个唯一的编号,代码行将在其中进行解释:


这给了我一个错误:c=tuplemapfloat,c TypeError:'numpy.int64'对象不可编辑。还有,这真的会使10个条目有相同的标签,它们得到相同的颜色吗?@dorien不,这不符合要求,我在编辑之前没有意识到,对不起。我将尝试更新我的答案。
import numpy as np
import matplotlib.pyplot as plt

line = plt.figure()

data = [[1,1.5,3,2.4,5],[2,4.1,2.4,1,3],["apple","banana","grape","apple","banana"]]    

colors = [{ni: indi for indi, ni in enumerate(set(data[2]))}[ni] for ni in data[2]]

plt.scatter(data[0], data[1], c=colors, cmap="plasma")    

for i in range(len(data[0])):    
    plt.annotate(str(data[2][i]),
                     xy=(data[0][i], data[1][i]),
                     xytext=(data[0][i], data[1][i]),
                     textcoords='offset points',
                     ha='right',
                     va='bottom')

plt.show()