Изменение цвета кластеров в матплолиб - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь построить некоторые данные и хочу уменьшить код. На самом деле у меня есть функциональный код, но с большим количеством строк, которые мне нужны.

Мой код:

cnt = 150
for cluster in range(2,6):
    model = AgglomerativeClustering(n_clusters=cluster, affinity='euclidean', linkage='average')
    model.fit(X)
    labels = model.labels_
    cnt += 1
    plt.subplot(cnt)

    plt.scatter(X[labels==0, 0], X[labels==0, 1], s=1, marker='o', color='red')
    plt.scatter(X[labels==1, 0], X[labels==1, 1], s=1, marker='o', color='blue')
    plt.scatter(X[labels==2, 0], X[labels==2, 1], s=1, marker='o', color='green')
    plt.scatter(X[labels==3, 0], X[labels==3, 1], s=1, marker='o', color='purple')
    plt.scatter(X[labels==4, 0], X[labels==4, 1], s=1, marker='o', color='orange')
    plt.title('N. Clust: '+str(cluster))
    plt.suptitle('Linkage: average')

plt.show()

Но это не очень хороший вариант, потому что эта строка plt.scatter(X[labels==0, 0], X[labels==0, 1], s=1, marker='o', color='red') слишком много раз.

Я пробую некоторые варианты, но не могу решить их, и я знаю, что это легко ...

cnt = 150
colors = ['red','blue','green','purple','orange']
for cluster in range(2,6):
    model = AgglomerativeClustering(n_clusters=cluster, affinity='euclidean', linkage='average')
    model.fit(X)
    labels = model.labels_
    cnt += 1
    plt.subplot(cnt)

    for r in range(cluster):
        plt.scatter(X[labels==0, 0], X[labels==0, 1], s=1, marker='o', color=colors[r])

plt.show()

Может кто-нибудь помочь мне? Большое спасибо!

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