2017-05-28 355 views
0

我创建了this fiddle用于使用d3js进行简单的树可视化。它工作正常。但是,当树变得非常大时,我遇到了问题,而节点旁边的文本往往会重叠。所以我需要设置一个垂直距离。我怎样才能做到这一点?下图显示了我的意思:d3js树布局文本之间的垂直距离重叠

enter image description here

我试图与separation功能添加它,但是这是我想只有水平改变它。

var tree = d3.layout.tree().nodeSize([1, nodeHeight]) 
     .separation(function(a, b) { 
      var height = a.height + b.width, 
       distance = height/2 + 50; 
       return distance; 
     }), 
nodes = tree.nodes(data), 
links = tree.links(nodes); 
+0

可能重复https://stackoverflow.com/questions/13032722/d3-tree-vertical-separation,你能同时提供导致该错误在你的jsfiddle树数据的例子,请 –

回答

0

我认为兄弟姐妹节点不重叠,但表兄弟。要处理您的问题,您需要了解tree.separation()的工作原理。

在我的一个项目中。我做到了。

var tree = d3.layout.tree(); 
tree.nodeSize(/*some stuff here*/) 
.separation(function(a, b) { 
     return (a.parent == b.parent ? 1 : 1.5); 
    }); 

回报(a.parent == b.parent 1:1.5),基本上是说,如果 节点具有相同的父母或者是兄弟,然后将它们之间的分离是没有的,如果他们不具备相同的父母,他们被认为是堂兄弟,因此它们之间的计算距离是您节点的高度(您在nodeSize中定义的)的50%。

我不擅长解释像专业人士这样的东西,但绝对检查分离方法,并记住它处理表兄弟节点之间的距离。

enter image description here