我正在尝试修改 directed graph editor通过以下方式:
绘制链接时,不会重新定位源节点和目标节点。相反,将在节点的当前位置之间绘制链接。
在周围拖动现有节点(使用 ctrl)时,它不会影响附加到它的任何附加节点的位置。相反,所有其他节点将保留在它们的位置,只有附加到被拖动节点的链接会根据拖动改变它们的长度。
我尝试提供这个函数来强制链接距离:
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 之后)。
但是,这导致了一个运行时错误,我无法解决。
关于如何实现图形的这种行为有什么想法吗?
最佳答案
听起来您想使用 fixed
选项,将其设置为每个节点节点的属性,例如,{ id:123, fixed:true }
。
固定节点根本不会被力布局移动,所以除非你明确地给它们一个初始位置,它们只会被布局随机分配一个。另请注意,在固定所有节点的情况下,没有真正的理由使用力导向布局。
关于javascript - d3 force directed layout - 在不改变节点位置的情况下绘制链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26090964/