我对 D3 很陌生,所以如果这是一个非常基本的问题,我深表歉意。我希望实现一个显示层次聚类算法结果的树状图。这种布局与我能够找到的示例有一个主要区别:除了树的叶子之外,节点没有任何身份,而只是在相对于它们的相似性的特定高度连接子树。
例如看:
http://r.789695.n4.nabble.com/file/n2293207/Dendrogram.jpeg
与http://bl.ocks.org/mbostock/4063570相比,此树状图不具有“n 部分性质”(为每个节点级别定义的层)。
因此,问题是如何定义具有任意子树连接位置的树状图?
谢谢
托马斯
编辑:
它似乎没有预期的那么困难,也不需要开发新的布局。在我的输入数据中,我包含了一个带有计算出的连接高度的附加参数。一个示例 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 是树状图高度的合适比例。