来自D3中的层次聚类的树形图

时间:2013-07-30 09:21:13

标签: d3.js hierarchical-clustering dendrogram

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

0 个答案:

没有答案