我在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的每个坐标应该具有相同的颜色(我可能还需要图例中的那些)。
答案 0 :(得分:1)
解决相同标签相同颜色问题的方法是编写一个脚本,生成一个颜色列表,为数据中的每个唯一值分配一个唯一的编号(该行代码在{{3 }}):
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()