私はD3を初めて使用するので、これが非常に基本的な質問である場合は申し訳ありません. 階層的クラスタリング アルゴリズムの結果を示すデンドログラムを実装したいと考えています。このレイアウトは、私が見つけた例とは大きな点で異なります。ツリーの葉を除いて、ノードにはアイデンティティがなく、類似性に関連する特定の高さでサブツリーを結合するだけです。
例として、次を見てください。
http://r.789695.n4.nabble.com/file/n2293207/Dendrogram.jpeg
http://bl.ocks.org/mbostock/4063570と比較すると、このデンドログラムには「n-partite nature」(ノードのレベルごとに定義されたレイヤー) がありません。
したがって、問題は、サブツリーの任意の結合位置を持つデンドログラムをどのように定義するかです。
ありがとう
トーマス
編集:
予想していたほど難しくはなかったようで、新しいレイアウトの開発も必要ありませんでした。私の入力データには、結合の計算された高さを持つ追加のパラメーターが含まれていました。json ファイルの例は次のようになります。
{
"height": "1",
"children": [
{
"height": "0.8",
"children": [
{
"name": "leaf 1",
"height": "0"
},
{
"height": "0.35",
"children": [
{
"name": "leaf 2",
"height": "0"
},
{
"name": "leaf 3",
"height": "0"
}
]
]
},
{
"name": "leaf 4",
"height": "0"
}
]
}
次に、ノード オブジェクトを計算するときに、マップを使用して y 値を変換します。
var nodes = cluster.nodes(root).map(function(d) {d.y = scale(d.height); return d});
ここで、cluster はクラスター レイアウト オブジェクトで、scale は樹形図の高さに適したスケールです。