2017-09-13 5 views
3

結果をクラスタリングしようとしています。 2次元アレイXを含み、YはScatterPlot Pythonでクラスタリングを使用したカラーリングとラベル付け

ent_names座標 - -

Y_sklearnは、ラベル名

次のように私は散布図を表示するためのロジックを持っているが含まれています。私はmatplotlibのを使用してラベル名と一緒に3つのクラスタに入ります。

from sklearn.cluster import KMeans 
model = KMeans(n_clusters = 3) 
model.fit(Y_sklearn) 
plt.scatter(Y_sklearn[:,0],Y_sklearn[:,1], c=model.labels_); 
plt.show() 

は今、上記のコードは次のように散布図を表示します: enter image description here

しかし、このプロットに沿ってラベル名も表示したいと思います。私はこのような何かをしようとしたが、それはすべてのために一色だけ表示されます。

with plt.style.context('seaborn-whitegrid'): 
    plt.figure(figsize=(8, 6)) 
    for lab, col in zip(ent_names, 
        model.labels_): 
     plt.scatter(Y_sklearn[y==lab, 0], 
       Y_sklearn[y==lab, 1], 
       label=lab, 
       c=model.labels_) 
    plt.xlabel('Principal Component 1') 
    plt.ylabel('Principal Component 2') 
    plt.legend(loc='lower center') 
    plt.tight_layout() 
    plt.show() 

答えて

1

をあなたは、この例のように一緒に散布図を置くために、同じ軸axにプロットすることがあります。

import matplotlib.pyplot as plt 
import numpy as np 

XY = np.random.rand(10,2,3) 

labels = ['test1', 'test2', 'test3'] 
colors = ['r','b','g'] 

with plt.style.context('seaborn-whitegrid'): 
    plt.figure(figsize=(8, 6)) 
    ax = plt.gca() 

    i=0 
    for lab,col in zip(labels, colors): 
     ax.scatter(XY[:,0,i],XY[:,1,i],label=lab, c=col) 
     i+=1 

    plt.xlabel('Principal Component 1') 
    plt.ylabel('Principal Component 2') 
    plt.legend(loc='lower center') 
    plt.tight_layout() 
    plt.show() 

enter image description here

+0

@Serenityへのお返事ありがとうございます。しかし、私の配列は、リスト要素を含むような順番に2つの要素の各々:Y_sklearn OUT [81]: アレイ([1.24746319、-0.29333667]、 [0.66606617、-1.14079266]、 [-0.59427804、-0.80379676] 、 ...、 [0.43926165、0.98754353]、 [0.82787763、-1.52125022]、 [-1.62969128、-0.40198059]])。したがって、エラー –

+0

私の配列は単なる例です。 'Y_sklearn [y == lab、0]、Y_sklearn [y == lab、1]'のように配列を散らばらなければなりません。主な目標は、同じ軸にプロットすることです。 'plt.scatter'ではなく' ax.scatter'を呼び出さなければなりません。 – Serenity

関連する問題