在MATLAB中表示径向树状图

时间:2013-02-13 15:15:33

标签: matlab

我想用弧线表示径向线的树形图。

到目前为止,我已经尝试了

t2=linkage(squareform(t1),'single')
dendrogram(t2,0,'colorthreshold',0.5)

并将输出设为http://i48.tinypic.com/1zpgnyq.jpg

请告诉我如何在MATLAB中表示相同的径向树状图,如下图所示。

http://i45.tinypic.com/ebaag2.png

3 个答案:

答案 0 :(得分:6)

您可以在MATLAB Central中尝试我的Polar树状图功能:http://www.mathworks.co.uk/matlabcentral/fileexchange/21983-draw-a-polar-dendrogram

希望它适合你!

答案 1 :(得分:2)

Matlab没有用于制作径向树状图的内置函数。使用可能适合您的代码快速搜索a page about Hierarchical Random Graphs

答案 2 :(得分:0)

我修改了@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()函数。

可能有一种更清洁的方法可以做到这一点,但这个对我有用。

如果您对此有任何意见,请告诉我。