주요 콘텐츠

dendrogram

덴드로그램 플롯

설명

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

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

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

예제

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

예제

dendrogram(___,Name=Value)는 하나 이상의 이름-값 인수를 사용하여 추가 옵션을 지정합니다. 예를 들어 리프 노드의 순서와 덴드로그램 플롯의 방향을 지정할 수 있습니다.

예제

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

H = dendrogram(___)Line 객체로 구성된 벡터를 반환합니다. 위에 열거된 구문에 나와 있는 인수 조합을 사용할 수 있습니다.

예제

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

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

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

예제

예제

모두 축소

표본 데이터를 생성하고 사용하여 linkage 함수를 이용해 계층적 이진 군집 트리를 만듭니다. 트리의 덴드로그램을 플로팅합니다.

rng(0,"twister") % For reproducibility
X = rand(10,3);
tree = linkage(X,"average");
dendrogram(tree)

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

표본 데이터를 생성하고 사용하여 linkage 함수를 이용해 계층적 이진 군집 트리를 만듭니다.

rng(0,"twister") % For reproducibility
X = rand(10,3);
tree = linkage(X,"average");

최적의 리프 순서를 계산하고 덴드로그램을 플로팅합니다.

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

     3     7     6     1     4     9     5     8    10     2

dendrogram(tree,Reorder=leafOrder)

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

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

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

rng(0,"twister") % 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

표본 데이터를 생성하고 사용하여 linkage 함수를 이용해 계층적 이진 군집 트리를 만듭니다.

rng(0,"twister") % For reproducibility
X = rand(10,3);
tree = linkage(X,"average");

디폴트 색 분계점을 사용하여 가로 방향의 덴드로그램을 플로팅합니다. 덴드로그램 선 너비를 변경할 수 있도록 Line 객체를 반환합니다.

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.

R2024b 이후

표본 데이터를 생성하고 사용하여 linkage 함수를 이용해 계층적 이진 군집 트리를 만듭니다.

rng(0,"twister") % For reproducibility
X = rand(25,3);
tree = linkage(X,"average");

리프 노드를 군집에 할당합니다.

clusterAssignments = cluster(tree,Cutoff=1.1,Criterion="inconsistent");

덴드로그램을 플로팅합니다. 군집 할당에 따라 노드 그룹과 리프 노드 마커의 색을 지정합니다. 군집 할당을 생성하기 위해 트리가 잘리는 위치를 나타내는 파선을 표시합니다.

dendrogram(tree,ClusterIndices=clusterAssignments, ...
    ShowMarkers=true,ShowCut=true);

Figure contains an axes object. The axes object contains 32 objects of type line. One or more of the lines displays its values using only markers These objects represent cluster 1, cluster 2, cluster 3, cluster 4, cluster 5, cluster 6, cluster 7.

입력 인수

모두 축소

계층적 이진 군집 트리로, 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을 따옴표로 묶으십시오.

예: dendrogram(tree,Orientation="left",Reorder=myOrder)myOrder로 지정된 순서대로 리프를 포함하는 가로 덴드로그램을 지정합니다.

덴드로그램 플롯의 리프 노드 순서로, 전체 트리의 노드 순서를 지정하는 숫자형 벡터로 지정됩니다. 순서 벡터는 벡터 1:M의 치환 벡터여야 합니다. 여기서 M은 원래 데이터 세트의 데이터 점 개수입니다. 세로 덴드로그램의 경우 왼쪽에서 오른쪽 순서를 지정하고, 가로 덴드로그램의 경우 아래쪽에서 위쪽 순서를 지정합니다.

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

데이터형: single | double

덴드로그램 플롯에서 교차하는 가지가 있는지 확인 여부를 나타내는 표시자로, 숫자형 또는 논리값 1(true)이거나 0(false)으로 지정됩니다. 이 옵션은 Reorder의 값을 지정하는 경우에만 유용합니다.

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

R2024b 이후

리프 노드에 대한 군집 할당으로, 길이가 N인 숫자형 벡터로 지정됩니다. 여기서 Ntree의 행 개수입니다. ClusterIndices의 각 값은 범위 [1,C] 내에 있는 정수여야 하며, 여기서 C는 군집 개수입니다. ClusterIndices를 지정하는 경우, 함수는 지정된 ColorThreshold 값을 무시하고, 대신에 군집 할당에 따라 노드 그룹의 색을 지정합니다. ShowMarkers=true를 지정하는 경우에도 함수는 군집 할당에 따라 리프 노드 마커의 색을 지정합니다.

예: ClusterIndices=[1 1 2 1 2 1]

데이터형: single | double

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

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

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

  • ClusterIndices를 지정하는 경우, 함수는 지정된 ColorThreshold 값을 무시하고, 대신에 군집 할당에 따라 노드 그룹의 색을 지정합니다.

예: ColorThreshold=0.5

데이터형: single | double | string | char

R2024b 이후

절단선을 나타내는 표시자로, 숫자형 또는 논리값 0(false)이나 1(true)로 지정됩니다. ClusterIndicesShowCut=true를 지정하는 경우, dendrogramClusterIndices에서 군집 할당을 생성하기 위해 트리가 잘리는 위치를 나타내는 파선을 플로팅합니다. ColorThresholdShowCut=true를 지정하고 ClusterIndices를 지정하지 않은 경우, dendrogramColorThreshold 값으로 파선을 플로팅합니다.

예: ShowCut=true

데이터형: logical

R2024b 이후

리프 노드 마커를 표시하는 표시자로, 숫자형 또는 논리값 0(false)이나 1(true)로 지정됩니다. ShowMarkers=true를 지정하는 경우, dendrogram은 각 리프 노드에 채워지지 않은 검정색 원 마커를 플로팅합니다. ClusterIndices를 추가로 지정하면, 해당 리프의 모든 행이 동일한 군집에 있는 경우 원 마커가 군집 할당에 따라 채워지고 색이 지정됩니다. 리프 노드 마커 위에 커서를 놓으면 해당 리프에 대한 트리 행 번호와 (지정된 경우, 군집 할당도) 함께 데이터팁이 표시됩니다. 데이터팁에는 리프에 대한 최대 3개의 행 번호와 3개의 군집 할당이 표시됩니다.

예: ShowMarkers=true

데이터형: logical

덴드로그램의 방향으로, 다음 값 중 하나로 지정됩니다.

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

세로 덴드로그램에는 "top" 또는 "bottom"을 지정합니다. 이 경우 리프 노드는 가로로 배열됩니다.

가로 덴드로그램에는 "left" 또는 "right"를 지정합니다. 이경우 리프 노드는 세로로 배열됩니다.

원래 데이터 세트에 있는 각 데이터 점의 레이블로, 문자형 벡터, string형 배열 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다. dendrogram은 덴드로그램 플롯에서 해당 데이터 점의 레이블을 갖는 단일 데이터 점을 포함하는 리프에 레이블을 지정합니다.

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

출력 인수

모두 축소

덴드로그램 플롯의 선으로, Line 객체로 구성된 벡터로 반환됩니다.

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

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

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

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

버전 내역

R2006a 이전에 개발됨

모두 확장