是否可以在 d3.js 中调整强制布局的大小?例如,我有一个由定义的布局
var force = d3.layout.force()
.nodes(documents.nodes)
.linkDistance(0)
.friction(.2)
.size([width, height]);
force.start();
我希望稍后在项目中调整它的大小。这可能吗?
是否可以在 d3.js 中调整强制布局的大小?例如,我有一个由定义的布局
var force = d3.layout.force()
.nodes(documents.nodes)
.linkDistance(0)
.friction(.2)
.size([width, height]);
force.start();
我希望稍后在项目中调整它的大小。这可能吗?
不久,在调整大小事件中,您应该更改svg 对象的属性(它也会更改重心)并恢复力计算:
window.onresize = function() {
width = window.innerWidth, height = window.innerHeight;
svg.attr('width', width).attr('height', height);
force.size([width, height]).resume();
};
此处提供了d3 强制调整大小的示例。
根据文档,.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)); });
}