3

是否可以在 d3.js 中调整强制布局的大小?例如,我有一个由定义的布局

var force = d3.layout.force()
.nodes(documents.nodes)
.linkDistance(0)
.friction(.2)
.size([width, height]);

force.start();

我希望稍后在项目中调整它的大小。这可能吗?

4

2 回答 2

4

不久,在调整大小事件中,您应该更改svg 对象的属性(它也会更改重心)并恢复力计算:

window.onresize = function() {
  width = window.innerWidth, height = window.innerHeight;
  svg.attr('width', width).attr('height', height);
  force.size([width, height]).resume();
};

此处提供了d3 强制调整大小的示例。

于 2014-02-26T15:25:37.687 回答
3

根据文档.size()力布局的参数仅影响节点的重心和初始分布,而不影响可用空间。您将不得不自己对其施加任何约束,例如在tick函数中:

force.on("tick", function() {
    node.attr("cx", function(d) { return Math.min(maxX, Math.max(minX, d.x)); })
        .attr("cy", function(d) { return Math.min(maxY, Math.max(minY, d.y)); });
}
于 2013-10-11T08:37:44.537 回答