# バイプロットで表示し​たデータの色分けを行​う方法(biplot​,pca)

22 views (last 30 days)

Commented: 徹也 長島 on 23 Dec 2022
Matlab初心者です。

データをクラスターごとに色分けし，表示する方法がわかりません。
どうか知恵をお貸しいただけますでしょうか。
よろしくお願いいたします。
[coeff,score,latent]=pca(D)
[idx,H,sumd]=kmeans(D,3,MaxIter=1000,Display="final",Replicates=5)
vbls = {'Depth','Sample','Ping','sea bottom mean','Length','Height','Perimeter','Area','BAmean','TAmean','Elongation','UNEVENNESS1','UNEVENNESS"','Lectangularity','Fractual demensiton','Circularity'};
figure
biplot(coeff(:,1:3),'scores',score(:,1:3),"VarLabels",vbls)

Atsushi Ueno on 11 Nov 2022
Edited: Atsushi Ueno on 11 Nov 2022
• 今回の添付データの場合、biplot関数の出力(ｸﾞﾗﾌｨｯｸｵﾌﾞｼﾞｪｸﾄ)は下記の様になります。
% h には 1013 個のオブジェクト ハンドルが含まれています
%　・ハンドル h( 1:16) は、16変数の line ハンドルに対応します
%　・ハンドル h(17:32) は、16変数のマーカー ハンドルに対応します
%　・ハンドル h(33:48) は、16変数のテキスト ハンドルに対応します
%　・ハンドル h(49:1012) は、観測値の line ハンドルに対応します
%　・ハンドル h(1013) は、座標軸の line ハンドルに対応します
• kmeans関数の出力する「クラスター インデックス (idx)」を色付けのネタとして用いましたが、この値(今回の場合1~3)が実行の度に入れ替わってしまう難点があります。
[coeff,score,latent]=pca(D);
[idx,H,sumd]=kmeans(D,3,MaxIter=1000,Display="final",Replicates=5);
Replicate 1, 19 iterations, total sum of distances = 10015.7. Replicate 2, 21 iterations, total sum of distances = 10017.1. Replicate 3, 20 iterations, total sum of distances = 10017.1. Replicate 4, 10 iterations, total sum of distances = 10014.8. Replicate 5, 11 iterations, total sum of distances = 10017.1. Best total sum of distances = 10014.8
vbls = {'Depth','Sample','Ping','sea bottom mean','Length','Height','Perimeter','Area','BAmean','TAmean','Elongation','UNEVENNESS1','UNEVENNESS"','Lectangularity','Fractual demensiton','Circularity'};
figure
h = biplot(coeff(:,1:3),'scores',score(:,1:3),"VarLabels",vbls); % 出力hを追記
% ここから下を追加
xlim([-0.1 0.5]); ylim([-0.1 0.5]); zlim([-0.5 0.3]); % 適当に範囲を調整
color = 'rgb'; % 適当な3色を作成
for k = 1:size(D,1)
h(k + size(D,2)*3).MarkerEdgeColor = color(idx(k)); % 各データを赤一色から赤緑青に変更
end ありがとうございます。参考にさせていただきます！

### Categories

Find more on 次元削減と特徴抽出 in Help Center and File Exchange

R2022a

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!