Невозможно получить цвета для синхронизации между Matplotlib pcolormesh и маркером в цикле for - PullRequest
0 голосов
/ 10 марта 2019

Я пытаюсь построить приблизительные границы (основанные на евклидовом расстоянии до ближайшего центроида кластера с шагом 0,25) между кластерами, используя scikit-learn и matplotlib.

Я не могу получить цвета pcolormesh длясоответствует цветам точек на графике, выходящих из цикла for.

В случае цикла for кластерам присваивается цвет, основанный на их индексе.Например.km.labels [0] получает первый цвет в моей карте, km.labels 1 получает второй и т. д.

Хотя цвета для графика pcolormesh, который я подозреваю,распределяется в зависимости от того, когда этот индекс кластера впервые появляется в массиве.Например.clus_lab_mesh [0,0] (значение первой строки, столбца в этом 2d-массиве) принадлежит моему третьему кластеру (т.е. km.labels [2]).

Я пробовал разные вещи, такие как нормализация без решения проблемы.Я также не могу просто отсортировать возрастающий массив 2d mesh, так как это испортит позиции с моими значениями x и y.

Я не включаю полный код, так как он довольно длинный и находится внутри большего размера дляцикл для запуска k означает для разных значений k.Я надеюсь, что ниже достаточно, чтобы объяснить проблему.Спасибо!

x_mesh, y_mesh = np.meshgrid(x,y)
clus_lab_mesh = clus_lab0.reshape(x_mesh.shape) 

cmap = cm.get_cmap('tab10')        
colors = [cmap(0), cmap(1), cmap(2), cmap(3), cmap(4), cmap(5), cmap(6), cmap(7), cmap(8),cmap(9)]
plt.figure()
for j in range( M ):
     plt.plot( X[j:,2], X[j:,5], marker="o", markeredgecolor='w', linestyle="", markerfacecolor=colors[km.labels_[j]], markersize=7)

plt.pcolormesh(x_mesh, y_mesh, clus_lab_mesh, shading="flat", cmap="tab10", vmin=0, vmax=cmap.N
plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...