2017-04-13 2 views
0

私は以下のリンクを試しました(残念ながら、うまくいきませんでした): Associated Labels in a dendrogram plot - MATLAB 駅IDの代わりに私のものがPDBIdになります。関数dendrogram(tree、name、value)を使って、Matlabの樹状図にラベルを入れる方法は?

私の問題: 私はcsvファイルから系統樹を作成する "similarity_nogrp.csv"ています:

ここ

PDBId \t 0 \t   1 \t   2   3 \t    4 \t  
 
1A06 \t 1 \t   0.05344457 \t 0.439285476 \t 0.46664877 \t 0.40868216 \t 
 
1B6C \t 0.05344457 \t 1 \t   0.03371103 \t 0.029899324 \t 0.033972369 
 
1BO1 \t 0.439285476 \t 0.03371103 \t 1 \t   0.5579095 \t 0.488785068 \t 
 
1CDK \t 0.46664877 \t 0.029899324 \t 0.5579095 \t 1 \t   0.50682912 \t 
 
1CJA \t 0.40868216 \t 0.033972369 \t 0.488785068 \t 0.50682912 \t 1 \t 
 
1CSN \t 0.490366809 \t 0.047467331 \t 0.50842029 \t 0.533638473 \t 0.465180315 
 
1E8X \t 0.036246998 \t 0.002009194 \t 0.057903016 \t 0.066882369 \t 0.058359239 \t
は、最初の行では、

PDBIDは、行ですId、

0 1 2 3 4は列番号

dendrogram()で 'LabBId'を 'PDBId'に設定している間に、PDBIdごとにリーフノードにラベルを付けたいが、2列目(CSBIdを残して番号のみ)私はエラーを取得しています:ここで

は私のコードです:

filename = 'D:\\matlab codes\\similarity_nogrp.csv' 
 
X = csvread(filename,1,1) 
 
Z = linkage(X,'average') 
 
C = cluster(Z, 'maxclust', 3) 
 
H = dendrogram(Z,'Orientation','left','Labels',filename.PDBId)

最後の行のエラーがある:

??? Attempt to reference field of non-structure array.
葉ノードのラベルとしてPDBIdを使用できるように私に指示してください。 ありがとうございます。

答えて

1

あなたの問題は、構造体フィールドfilenameにアクセスしようとしていますが、filenameは構造体ではなく文字配列です。また、readcsvは数値のみを読み取ることができるため、とにかくラベルは取得されません。

代わりにreadtableを使用して、行と列の名前を取得し、テーブルから行名を読み取ることができます。ここで私が使用するコードは次のとおりです。

filename = 'D:\\matlab codes\\similarity_nogrp.csv'; 
T = tableread(filename,'ReadVariableNames', true, 'ReadRowNames', true) 
X = T{:,:}; % Get the data from the table without row/col names 
Z = linkage(X,'average') 
C = cluster(Z, 'maxclust', 3) 
H = dendrogram(Z,'Orientation','left','Labels',T.Properties.RowNames) 

そして、私が得た結果: Results

+0

ありがとうございました@Matthew – user3701435

関連する問題