d3强制定向布局 - 在不改变节点位置的情况下绘制链接

时间:2014-09-29 00:23:14

标签: javascript d3.js

我正在尝试以下列方式修改directed graph editor

  • 绘制链接时,不会重新定位源节点和目标节点。而是在节点的当前位置之间绘制链接。

  • 当拖动现有节点(使用ctrl)时,它不会影响连接到它的任何连接节点的位置。相反,所有其他节点将保持在其位置,并且只有连接到拖动节点的链接将根据拖动来更改其长度。

我尝试提供此功能以强制使用linkDistance:

force.linkDistance(function(link) {
   var deltaX = d.target.x - d.source.x,
    deltaY = d.target.y - d.source.y,
    dist = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
   return dist;
})

认为这会导致力量假设不需要在链接的每一侧重新定位节点(在documentation之后)。

然而,这导致了运行时错误,我无法解决。

关于如何实现图表的这种行为的任何想法?

1 个答案:

答案 0 :(得分:2)

您希望使用fixed选项,将其设置为每个节点节点的属性,例如{ id:123, fixed:true }

Here's a modified version

固定节点根本不会被力布局移动,所以除非你明确地给它们一个初始位置,否则它们只会被布局分配一个随机的位置。另请注意,所有节点都已修复,没有真正的理由使用强制定向布局。