Main Content

dendrogram

덴드로그램 플롯

설명

예제

dendrogram(tree)는 계층적 이진 군집 트리에 대한 덴드로그램 플롯을 생성합니다. 덴드로그램은 계층적 트리의 데이터 점을 연결하는 다수의 U자형 선으로 구성됩니다. 각 U의 높이는 연결되는 두 데이터 점 간의 거리를 나타냅니다.

  • 원래 데이터 세트에 30개 이하의 데이터 점이 있는 경우 덴드로그램의 각 리프는 하나의 데이터 점에 대응됩니다.

  • 데이터 점이 30개보다 많은 경우 dendrogram은 리프 노드 개수가 30개가 되도록 아래 쪽의 가지를 접습니다. 결과적으로, 플롯의 몇몇 리프는 둘 이상의 데이터 점에 대응됩니다.

예제

dendrogram(tree,Name,Value)는 하나 이상의 이름-값 쌍의 인수로 지정된 추가 옵션을 사용합니다.

예제

dendrogram(tree,P)P개 이하의 리프 노드를 갖는 덴드로그램 플롯을 생성합니다. 원래 데이터 세트에 데이터 점이 P개보다 많을 경우 dendrogram은 트리에서 아래쪽 가지를 접습니다. 결과적으로, 플롯의 몇몇 리프는 둘 이상의 데이터 점에 대응됩니다.

dendrogram(tree,P,Name,Value)는 하나 이상의 이름-값 쌍의 인수로 지정된 추가 옵션을 사용합니다.

dendrogram(ax,___)는 axes 객체 ax로 지정된 플롯 좌표축을 사용합니다. ax를 첫 번째 입력 인수로 지정하고, 그 다음에 위에 열거된 구문에 나와 있는 입력 인수를 원하는 대로 조합하여 지정하십시오.

예제

H = dendrogram(___)은 덴드로그램 플롯을 생성하고 line 핸들로 구성된 벡터를 반환합니다. 위에 열거된 구문의 입력 인수를 사용할 수 있습니다.

예제

[H,T,outperm] = dendrogram(___)은 원래 데이터 세트에 포함된 각 객체에 대한 리프 노드 개수를 포함하는 벡터 T와 덴드로그램에 보이는 순서대로 리프의 노드 레이블을 포함하는 벡터 outperm도 반환합니다.

  • 리프 노드 개수 P가 총 데이터 점 개수보다 작을 경우, 표시되는 일부 리프 노드가 여러 데이터 점에 대응되므로 T를 반환하는 것이 유용합니다.

  • outperm에서 제공되는 노드 레이블 순서는 가로 덴드로그램의 경우 왼쪽에서 오른쪽 순서이고, 세로 덴드로그램의 경우 아래쪽에서 위쪽 순서입니다.

예제

모두 축소

표본 데이터를 생성합니다.

rng('default') % For reproducibility
X = rand(10,3);

linkage를 사용하여 계층적 이진 군집 트리를 만듭니다. 그런 다음, 디폴트 옵션을 사용하여 덴드로그램을 플로팅합니다.

tree = linkage(X,'average');

figure()
dendrogram(tree)

Figure contains an axes object. The axes object contains 9 objects of type line.

표본 데이터를 생성합니다.

rng('default') % For reproducibility
X = rand(10,3);

linkage를 사용하여 계층적 이진 군집 트리를 만듭니다.

tree = linkage(X,'average');

D = pdist(X);
leafOrder = optimalleaforder(tree,D)
leafOrder = 1×10

     3     7     6     1     4     9     5     8    10     2

최적의 리프 순서를 사용하여 덴드로그램을 플로팅합니다.

figure()
dendrogram(tree,'Reorder',leafOrder)

Figure contains an axes object. The axes object contains 9 objects of type line.

덴드로그램 플롯의 리프 노드 순서는 왼쪽에서 오른쪽 순으로 leafOrder의 치환 벡터에 대응됩니다.

표본 데이터를 생성합니다.

rng('default') % For reproducibility
X = rand(100,2);

원래 데이터 세트 X에 100개의 데이터 점이 있습니다.

linkage를 사용하여 계층적 이진 군집 트리를 만듭니다. 그런 다음, 입력 인수 P0으로 설정하여 전체 트리(100개 리프 노드)에 대해 덴드로그램을 플로팅합니다.

tree = linkage(X,'average');
dendrogram(tree,0)

Figure contains an axes object. The axes object contains 99 objects of type line.

이제, 25개의 리프 노드만을 가지고 덴드로그램을 플로팅합니다. 원래 데이터 점과 플롯에 표시된 리프 노드 간의 매핑을 반환합니다.

figure
[~,T] = dendrogram(tree,25);

Figure contains an axes object. The axes object contains 24 objects of type line.

덴드로그램 플롯의 리프 노드 7에 있는 원래 데이터 점을 나열합니다.

find(T==7)
ans = 7×1

     7
    33
    60
    70
    74
    76
    86

표본 데이터를 생성합니다.

rng('default') % For reproducibility
X = rand(10,3);

linkage를 사용하여 계층적 이진 군집 트리를 만듭니다. 그런 다음, 디폴트 색 분계점을 사용하여 세로 방향의 덴드로그램을 플로팅합니다. 덴드로그램 선 너비를 변경할 수 있도록 선에 대한 핸들을 반환합니다.

tree = linkage(X,'average');
H = dendrogram(tree,'Orientation','left','ColorThreshold','default');
set(H,'LineWidth',2)

Figure contains an axes object. The axes object contains 9 objects of type line.

입력 인수

모두 축소

계층적 이진 군집 트리로, linkage를 사용하여 생성하는 (M – 1)×3 행렬로 지정됩니다. 여기서 M은 원래 데이터 세트에 포함된 데이터 점의 개수입니다.

덴드로그램 플롯에 포함시킬 최대 리프 노드 개수로, 양의 정수 값으로 지정됩니다.

  • 원래 데이터 세트에 P개 이하의 데이터 점이 있는 경우 덴드로그램의 각 리프는 하나의 데이터 점에 대응됩니다.

  • 데이터 점이 P개보다 많을 경우 dendrogram은 리프 노드 개수가 P개가 되도록 아래쪽 가지를 접습니다. 결과적으로, 플롯의 몇몇 리프는 둘 이상의 데이터 점에 대응됩니다.

    P를 지정하지 않으면 dendrogram은 최대 리프 노드 개수로 30을 사용합니다. 전체 트리를 표시하려면 P0으로 설정하십시오.

데이터형: single | double

플롯의 좌표축으로, Axes 또는 UIAxes 객체로 지정됩니다. ax를 지정하지 않을 경우 dendrogram은 현재 좌표축을 사용하여 플롯을 생성합니다. axes 객체를 생성하는 방법에 대한 자세한 내용은 axesuiaxes를 참조하십시오.

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: 'Orientation','left','Reorder',myOrdermyOrder에서 지정된 순서대로 리프를 포함하는 세로 덴드로그램을 지정합니다.

덴드로그램 플롯에 포함된 리프 노드의 순서로, 'Reorder'와 함께 전체 트리에서 리프의 순서를 제공하는 벡터가 쉼표로 구분되어 지정됩니다. 순서 벡터는 벡터 1:M의 치환 벡터여야 합니다. 여기서 M은 원래 데이터 세트에 포함된 데이터 점의 개수입니다. 가로 덴드로그램의 경우 왼쪽에서 오른쪽 순서를 지정하고, 세로 덴드로그램의 경우 아래쪽에서 위쪽 순서를 지정합니다.

M이 덴드로그램 플롯에 포함된 리프 노드 개수 P(기본적으로 P는 30임)보다 클 경우 접힌 노드에 대응되는 리프 그룹을 분리하지 않는 치환 벡터만 지정할 수 있습니다.

데이터형: single | double

덴드로그램 플롯에서 교차하는 가지가 있는지 확인할지 여부를 나타내는 표시자로, 'CheckCrossing'과 함께 true 또는 false가 쉼표로 구분되어 지정됩니다. 이 옵션은 Reorder의 값을 지정하는 경우에만 유용합니다.

CheckCrossing의 값이 true인 경우 dendrogram은 리프 노드 순서로 인해 플롯에서 가지가 교차하게 되는 경우 경고를 표시합니다. 원래 데이터 세트의 데이터 점 개수가 P보다 커서 덴드로그램 플롯에 전체 트리가 표시되지 않는 경우, dendrogram은 리프 노드 순서로 인해 플롯에 표시된 덴드로그램에서 가지가 교차하게 되는 경우에만 경고를 표시합니다. 즉, 순서로 인해 플롯에 표시된 덴드로그램에서가 아닌 전체 트리에서 가지가 교차하게 되는 경우에는 경고가 발생하지 않습니다.

데이터형: logical

덴드로그램 플롯의 고유한 색에 대한 분계점으로, 'ColorThreshold'와 함께 'default' 또는 (0,max(tree(:,3))) 범위의 스칼라 값이 쉼표로 구분되어 지정됩니다. ColorThreshold의 값이 T인 경우 dendrogram은 덴드로그램에서 연결이 T보다 작은 노드 그룹 각각에 고유한 색을 할당합니다.

  • ColorThreshold의 값이 'default'인 경우 분계점 T는 최대 연결의 70%, 즉 0.7*max(tree(:,3))입니다.

  • ColorThreshold에 대한 값을 지정하지 않거나 (0,max(tree(:,3))) 범위를 벗어난 분계점을 지정하는 경우 dendrogram은 덴드로그램 플롯에 하나의 색만 사용합니다.

Figure 창에 표시되는 덴드로그램의 방향으로, 'Orientation'과 함께 다음 값 중 하나가 쉼표로 구분되어 지정됩니다.

'top'위쪽에서 아래쪽
'bottom'아래쪽에서 위쪽
'left'왼쪽에서 오른쪽
'right'오른쪽에서 왼쪽

원래 데이터 세트의 각 데이터 점에 대한 레이블로, 'Labels'와 함께 문자형 배열, string형 배열 또는 문자형 벡터로 구성된 셀형 배열이 쉼표로 구분되어 지정됩니다. dendrogram은 덴드로그램 플롯에서 (해당 데이터 점에 대한 레이블을 갖는) 단일 데이터 점을 포함하는 리프에 레이블을 지정합니다.

부모 컨테이너로, Figure 또는 Panel 객체로 지정됩니다. 이러한 객체 속성에 대한 자세한 내용은 Figure 속성Panel Properties 항목을 참조하십시오.

출력 인수

모두 축소

덴드로그램 플롯의 선에 대한 핸들로, 벡터로 반환됩니다.

원래 데이터 세트의 각 데이터 점에 대한 리프 노드 개수로, 길이가 M인 열 벡터로 반환됩니다. 여기서 M은 원래 데이터 세트의 데이터 점 개수입니다.

원래 데이터에 데이터 점이 P개 미만인 경우(기본적으로 P는 30임) 덴드로그램에 모든 데이터 점이 표시되며, 각 노드는 하나의 데이터 점을 포함합니다. 이 경우, T는 항등 사상 T = (1:M)'입니다.

TP가 총 데이터 점 개수보다 작은 경우에 유용합니다. 즉, 덴드로그램의 일부 리프 노드가 여러 데이터 점에 대응되는 경우를 말합니다. 예를 들어, 덴드로그램 플롯의 어떤 점이 리프 노드 k에 포함되었는지 알아보려면 find(T==k)를 사용하십시오.

플롯에 표시된 덴드로그램의 리프에 대한 노드 레이블의 치환 벡터로, 행 벡터로 반환됩니다. outperm은 가로 덴드로그램의 경우 왼쪽에서 오른쪽 순서로 벡터를 반환하고, 세로 덴드로그램의 경우 아래쪽에서 위쪽 순서로 벡터를 반환합니다. 덴드로그램 플롯에 P개의 리프가 있는 경우 outperm은 벡터 1:P의 치환 벡터입니다.

버전 내역

R2006a 이전에 개발됨