Я пытаюсь использовать карту цветов для обозначения метки, которой принадлежит каждая точка данных в наборе данных.
В моем дизайне есть 3 примера и соответствующие метки
X = np.array([[0,0],[1,0],[2,0]])
labels = np.array([0,1,2])
,метки [0,1,2] представлены соответственно «малиновый», «салатовый», «темно-синий».
color_list = ["crimson", "limegreen", "navy"]
cmap = mpl.colors.ListedColormap(color_list)
plt.scatter(X[:,0],X[:,1], c = labels, cmap=cmap, s=100)
выходы

пока все хорошо.
когда метки меняются, дела идут ужасно
labels[2] = 1
cmap = mpl.colors.ListedColormap(color_list)
plt.scatter(X[:,0],X[:,1], c = labels, cmap=cmap, s=100)
выходы

это разумно, потому что метка 1 - максимальная в метках, а "navy" - максимальная cmap.
, но это не то, что мне нужно.в моем дизайне метка 1 соответствует «салатовый».
уродливый раствор (фрагмент_1), показанный ниже
color_list = color_list[:-1]
cmap = mpl.colors.ListedColormap(color_list)
plt.scatter(X[:,0],X[:,1], c = labels, cmap=cmap, s=100)
вывод

вывод теперь приемлем с уродливым обходным путем.
решение по этому посту , кажется, здесь не применимо.
X = np.array([[0,0],[1,0],[2,0]])
labels = np.array([0,1,1])
cmap = mpl.colors.ListedColormap(color_list)
ranges = np.linspace(labels.min(), labels.max(), len(color_list)+1)
norm = mpl.colors.BoundaryNorm(ranges, cmap.N)
plt.scatter(X[:,0], X[:,1], c=labels, cmap=cmap, s=100, norm=norm)
выводам

метка 1 должна соответствовать "известковому".
есть ли способ сделать вещи элегантными?