仅修复力布局中节点的一个维度?

Fix only one dimension of a node in force layout?

这个问题 - Fix Node Position in D3 Force-Directed Layout - 涵盖了如何在力布局中固定节点的位置。

我的问题是如何固定节点的一个维度,X 或 Y,并让另一个维度响应布局中的力。

D3 不直接支持此操作,但您可以通过在 tick 处理程序函数中重置您希望保持不变的坐标来手动执行此操作。

force.on("tick", function() {
  nodes.each(function(d) {
    d.x = d.px = d.savedX; // similar for y
  });
  // do other stuff
});

这要求您将所需的值与绑定到节点的数据一起存储,在示例中的属性 savedX 中(尽管您显然可以使用任何其他名称,只要它不被其他任何东西使用) ).