我对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"
}
]
}
然后,在计算节点对象时,使用map:
转换y值var nodes = cluster.nodes(root).map(function(d) {d.y = scale(d.height); return d});
其中cluster是您的簇布局对象,scale是树形图高度的合适比例。