2013-02-13 3 views
3

Я хочу представить дендрограмму в радиальных линиях с дугами.Представьте радиальную дендрограмму в 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

ответ

6

Вы могли бы попробовать свои функции Polar дендрограммы из MATLAB Central: http://www.mathworks.co.uk/matlabcentral/fileexchange/21983-draw-a-polar-dendrogram

Надеется, что это работает для Вас!

+1

Большое вам спасибо. Я попробовал функцию полярной дендрограммы. [IMG] http://i45.tinypic.com/14nftax.png [/ IMG] Мне также нужно представить цвета, как в приведенном выше радиальном изображении дендрограммы. Также не могли бы вы сообщить мне, как менять метки в дендрограмме. Еще раз спасибо. – user1214208

+0

Моя функция полярных дендрограмм - это простая обертка вокруг встроенной функции дендрограммы, которая принимает одинаковые входные данные и предоставляет те же возможности для управления цветами и ярлыками в сюжете, которые, к сожалению, немного ограничены. Вы можете точно узнать, что вы можете сделать на странице документации для команды dendrogram. Если вам нужно больше контроля, я боюсь, что вам нужно либо выкопать команду dendrogram, либо изменить ее (не бойтесь, это не так сложно, но сначала возьмите копию существующей версии) - или получите дескрипторы дерева в качестве выходных данных и вручную отключите их. –

+0

Да, я пытаюсь получить обходной путь, используя функцию дендрограммы для изменения меток. – user1214208

2

Matlab не имеет встроенную функцию для создания радиальной дендрограммы. Быстрый поиск оказался a page about Hierarchical Random Graphs с кодом, который может сработать для вас.

+0

спасибо. Я попытаюсь использовать это для своих данных. – user1214208

0

Я изменил код 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); 

Как вы можете видеть, это требует, чтобы задать метки перед аргументами, как правило, переходят в встроенную функцию Matlab dendrogram(), на которой основана polardendrogram().

Существует, вероятно, более чистый способ сделать это, но этот работает для меня.

Если у вас есть комментарии к этому вопросу, пожалуйста, дайте мне знать.

Смежные вопросы