2

我对 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 是树状图高度的合适比例。

4

0 回答 0