D3力导向布局分布在X轴上

时间:2014-05-14 13:56:54

标签: d3.js force-layout

使用D3 force layout播放图表我已经注意到结果总是倾向于圆形。但水平边缘有很多空白空间。我的问题 - 如何允许布局分布宽度超过高度的对象。我的天真尝试修改tick以降低0.99的费率(y)失败了:

    function tick() {
      path.attr("d", linkArc);
      circle
        .attr("cx", function(d) { 
            return d.x = Math.max(R, Math.min(width - R, d.x)); }) 
        .attr("cy", function(d) { 
            return d.y = Math.max(R, Math.min(height - R, d.y*0.99)); }); 

      text.attr("transform", transform);
    }

2 个答案:

答案 0 :(得分:0)

控制圆形展示位置的参数为.gravity()。该力将节点拉向中心。您可以通过将值设置为0来禁用它。如果这样做,您应该使用其他内容来确保节点不会离开画布,例如如在this example中那样。

答案 1 :(得分:0)

你是对的,这个功能的关键代码应该在pick()。

我没有为您的示例提供所有代码,但我将向您展示2个在X和Y轴上实现不同行为的示例。

在这个fiddle中,您只需查找包含.5625的行,这就是您压缩图表所需的全部内容。

在另一个fiddle中你可以看到图表被完全粉碎,常数较小。 :)