2016-10-10 8 views
1

matplotlib Pythonライブラリを使用してPCAプロットを作成していますが、クラス値(0,1,2)に応じて各ポイントの色を選択します。私はCと呼ばれるパラメータを使用していますので、行うに :scatter(matplotlibから)のc変数の値はどのように変換されますか?

plt.scatter(pca_data[:, 0], pca_data[:, 1], c=[0,1,1,0,2]) 

私がやりたい何が(しかし、私は私が与えるどのような値を見つけることができない、ラベルの付いたプロットから色を結ぶ凡例を追加することです0,1,2)が実際の色に変換されます。

色を直接与えることを考えましたが、プロセスを自動化して実際のクラス数に関係なく機能するようにしたいと思います。

私はto_rgb (from matplotlib.colors)を使ってみましたが、値が0と1の間ではないので動作しません。そして、それらをスケールすると、奇数の色ベクトル(黒、白、黒)で終わります。

ありがとうございました。ここ

答えて

0

3つのラベルが存在する例である(しかし、この方法は、任意の数にスケーラブルである):

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.cm as cm 
import matplotlib.colors as colors 

pca_data = np.random.randn(100,2) #some fake data 
labels = np.random.randint(low=0,high=3,size=100) #some fake class labels 

cNorm = colors.Normalize(vmin=0,vmax=2) #normalise the colormap 
scalarMap = cm.ScalarMappable(norm=cNorm,cmap='hot') #map numbers to colors 

fig,ax = plt.subplots() 
for i in np.unique(labels): 
    ax.scatter(pca_data[labels==i,0],pca_data[labels==i,1],\ 
       c=scalarMap.to_rgba(i),label="class {}".format(i),s=100) 

ax.legend(scatterpoints=1) 
enter image description here

関連する問題