javascript - d3 force directed layout - 在不改变节点位置的情况下绘制链接

标签 javascript d3.js

我正在尝试修改 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 }

Here's a modified version

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

关于javascript - d3 force directed layout - 在不改变节点位置的情况下绘制链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26090964/

相关文章:

javascript - jquery 幻灯片动画无法正常工作

添加 int 时 JavaScript 函数停止工作

javascript - 在 Angular 8 中使用 cli 命令添加 web worker 后出错

javascript - 使用 d3.js 就地旋转 svg

d3.js - 清除 d3.js 中的间隔

javascript - 使用 jQuery 更改表格元素内容

javascript - jquery超时改变div

javascript - D3.js 文本输入(在 svg 内)过渡不透明度 0 到 1 不会以 1 结束

javascript - Chrome svg 渲染问题 - d3 - 折线

d3.js - 在 d3.js 中创建强制布局节点标签