d3.js - 平静力量布局的初始刻度

标签 d3.js force-layout

我刚刚开始涉足 d3,发现学习曲线相当陡峭。这个过程与我习惯的完全不同,而且数学大多超出了我的理解范围。

无论如何,我的项目由一个代表系统之间集成 map 的力布局组成。这部分效果非常好,但我确实有一个主要问题,这也体现在 Michael Bostocks 网站上的力导向布局演示中: 当节点启动时,它们似乎是从 Canvas 上渲染出来的。此后,一些严肃的物理数学开始接管,模拟引力,使节点在一条相当困惑的路径上来回移动,直到它们平静下来并确定一些随机坐标。尽管第一次运行演示时这些 Action 非常酷,但当您尝试从公司管理员的角度查看网络接口(interface)的状态并且服务器不会保持静止时,一段时间后就会变得令人厌烦。

我确信我对该项目有正确的布局设置,因为我确实希望服务器自动布局,我确实希望可视化它们之间的链接。然而,我对万有引力效应持矛盾态度。

我想知道;是否可以手动设置每个节点的初始位置,以便我可以将它们放在更靠近重心的位置并稍微缩短“弹跳时间”?

最佳答案

以上所有答案都误解了 Øystein Amundsen 的问题。

稳定启动时的力的唯一方法是将node.x和node.y设置为适当的值。 请注意,节点是d3.js的数据,而不是表示的DOM类型。

例如,如果您加载

nodes = [{"id": a}, {"id": b}, {"id": c}]

进入

d3.layout.force().nodes(nodes)

您必须设置节点数组中所有元素的所有 .x 和 .y 它会像这样(在coffeescript中)

nodes = [{"id": a}, {"id": b}, {"id": c}]
for i in [0..2]
  nodes[i].x = 500 #the initial x position of node
  nodes[i].y = 300 #the initial y position of node
d3.layout.force().nodes(nodes).links(links)

那么节点将从force.start()时的位置开始。 这可以避免困惑。

关于d3.js - 平静力量布局的初始刻度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13463053/

相关文章:

javascript - 用 x,y,x1,y1,x2,y2,z 冲撞 d3js

html - 结合两个d3可视化

javascript - d3.js - 防止强制定向图中父/其他组的 "clustering"

javascript - 在力导向图中将文本置于弯曲链接上居中

javascript - 在 d3 强制布局图中的节点上显示文本

javascript - 颜色编码平行坐标

javascript - 以编程方式使用鼠标滚轮对 D3 平行坐标图执行缩放

javascript - 如何计算力向箭头图中不同大小圆的修改路径?

javascript - D3.js HTML 列表和子列表上的嵌套数据连接

javascript - D3径向力布置