Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

dendrogram

説明

dendrogram(tree) は、階層型バイナリ クラスター ツリーの系統樹を生成します。系統樹は、階層ツリー内のデータ点を結合する複数の U 形の線で構成されます。各 U 字の高さは、結合されている 2 つのデータ点の距離を表します。

  • 元のデータ セットのデータ点が 30 個以下の場合、系統樹内の各葉ノードは 1 つのデータ点に対応します。

  • データ点の数が 30 個を超える場合、dendrogram は葉ノードの数が 30 になるように下の方の分岐を折りたたみます。結果的に、プロットの一部の葉は、複数のデータ点に対応することになります。

dendrogram(tree,Name,Value) は、1 つ以上の名前と値の引数ペアで指定された追加のオプションを使用します。

dendrogram(tree,P) は、葉ノードの数が P 個以下の系統樹を生成します。元のデータ セットのデータ点の数が P 個を超える場合、dendrogram はツリーの下の方の分岐を折りたたみます。結果的に、プロットの一部の葉は、複数のデータ点に対応することになります。

dendrogram(tree,P,Name,Value) は、1 つ以上の名前と値のペアの引数によって指定された追加オプションを使用します。

dendrogram(ax,___) は、axes オブジェクト ax によって指定されたプロットの座標軸を使用します。ax を最初の入力引数として指定し、その後に上記の構文での入力引数の組み合わせが続きます。

H = dendrogram(___) は、系統樹を生成してライン ハンドルのベクトルを返します。前の構文の入力引数のいずれも使用できます。

[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.

入力引数

すべて折りたたむ

階層バイナリ クラスター ツリーは (M - 1) 行 3 列の行列として指定されます。この行列は linkage を使って生成します。M は元のデータ セットに含まれるデータ点の数です。

正の整数値として指定される、系統樹に含められる葉ノードの最大数。

  • 元のデータ セットのデータ点が P 個以下の場合、系統樹内の各葉は 1 つのデータ点に対応します。

  • データ点の数が 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',myOrder は、myOrder で指定された順序の葉ノードをもつ縦型の系統樹を指定します。

系統樹の葉ノードの順序は、コンマ区切りのペアとして指定され、'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 は系統樹に 1 色のみを使用します。

Figure ウィンドウの系統樹の向き。'Orientation' と以下のいずれかの値から構成されるコンマ区切りのペアとして指定します。

'top'上から下
'bottom'下から上
'left'左から右
'right'右から左

元のデータ セットにおける各データ点のラベル。'Labels' と文字配列、string 配列、または文字ベクトルの cell 配列から構成されるコンマ区切りのペアとして指定します。dendrogram は、単一のデータ点が含まれている系統樹プロット内の葉に、そのデータ点のラベルを付けます。

親コンテナー。Figure オブジェクトまたは Panel オブジェクトを指定します。これらのオブジェクト プロパティの詳細については、Figure のプロパティおよびPanel のプロパティを参照してください。

出力引数

すべて折りたたむ

ベクトルとして返される、系統樹のラインのハンドル。

元のデータ セットにある各データ点の葉ノードの数であり、M の列ベクトルとして長さが返されます。ここで M は元のデータ セットのデータ点の数です。

元のデータセットにあるデータ点の数が P に満たない場合 (P の既定値は 30 です)、系統樹にすべてのデータ点が表示され、各ノードに単一のデータ点が含まれます。その場合、T は恒等写像 T = (1:M)' になります。

T は、P がデータ点の総数より少ない場合に便利です。つまり、系統樹に表示された一部の葉ノードが複数のデータ点に対応する場合です。たとえば、系統樹の葉ノード k にどのデータ点が含まれているかを確認するには、find(T==k) を使用します。

行ベクトルとして返される、系統樹の図に表示された葉ノードのラベルの順列。outperm は、横型の系統樹では左から右、縦型の系統樹では下から上の順序を指定します。系統樹に P 個の葉がある場合、outperm はベクトル 1:P の順列になります。

バージョン履歴

R2006a より前に導入