樹状図を円弧のある放射状の線で表現したいと思います。
これまでに試しました
t2=linkage(squareform(t1),'single')
dendrogram(t2,0,'colorthreshold',0.5)
そして出力を
下の画像のように、MATLABで放射状樹状図と同じように表現する方法を教えてください。
樹状図を円弧のある放射状の線で表現したいと思います。
これまでに試しました
t2=linkage(squareform(t1),'single')
dendrogram(t2,0,'colorthreshold',0.5)
そして出力を
下の画像のように、MATLABで放射状樹状図と同じように表現する方法を教えてください。
MATLAB CentralのPolar樹状図関数を試すことができます:http://www.mathworks.co.uk/matlabcentral/fileexchange/21983-draw-a-polar-dendrogram
それがあなたのために働くことを願っています!
Matlabには、放射状樹状図を作成するための組み込み関数がありません。すばやく検索すると、階層ランダムグラフに関するページが表示され、コードが機能する可能性があります。
@Sam Robertsによって提供されたMatlabコードを変更し、ファイルの差分を添付しました。
1c1
< function [h,T,perm] = polardendrogram(Z,varargin)
---
> function [h,T,perm] = polardendrogram(Z, labels, varargin)
47,48c47,49
< [x,y]=pol2cart((((i-minx)/xrange)*(pi*11/6))+(pi*1/12),1.1);
< text(x,y,num2str(perm(i)));
---
> [x,y]=pol2cart((((i-minx)/xrange)*(pi*11/6))+(pi*1/12),1.01);
> THETA = (((i-minx)/xrange)*330 + 15); % pi/12 = 15°
> text(x,y,labels(perm(i)), 'rotation', THETA);
ご覧のとおり、これには、polardendrogram()の基になるMatlabの組み込みdendrogram()関数に通常渡す引数の前にラベルを指定する必要があります。
これを行うためのよりクリーンな方法がある可能性がありますが、これは私にとってはうまくいきます。
これについてコメントがあれば、私に知らせてください。