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();
プロジェクトの後半でサイズを変更したいと思います。これは可能ですか?
ドキュメントによると、フォース レイアウトの.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)); });
}