【发布时间】:2014-05-17 06:23:39
【问题描述】:
我是 D3.js 的新手,我想使用图形布局。我用一个非常简单的图表设置了这个演示,它遵循 D3 中内置的力导向布局。
我想要做的是能够关闭图形布局算法(例如,当用户按空格键时)然后仍然能够拖动节点,并转向力导向稍后重新布局。
现在我已经将它设置为在击中空间时停止强制导向布局:
d3.select("body")
.on("keydown", function() {
if (d3.event.keyCode == 32) {
if (forceActive) {force.stop();} else {force.resume();}
}
});
问题是每次拖动节点时都会重新启动强制布局。我已经将其范围缩小到(基本上)节点上的调用方法被绑定到强制布局的拖动方法。
即这段链接代码:
var node = svg.selectAll(".node")
.data(graph.nodes)
.enter().append("circle")
...
.call(force.drag);
我想我可能需要做两件事:
- 编写一个自定义的“拖动”方法来移动一个节点以及与单个节点关联的边。
- 根据需要将节点的调用方法重新绑定到它(这是否有意义?这会取代绑定的方法吗?而 force.drag 的真正作用是什么?)。
我想知道这是否以前做过,以及如何去做(完全可能没有用我的猜测来做这件事)。
【问题讨论】:
标签: javascript d3.js drag force-layout