【发布时间】:2020-02-04 09:17:35
【问题描述】:
我想根据圆的大小在力导向图中将节点居中:我们希望最大的圆居中,下一个最大的圆围绕它。
这里是 JSFiddle:https://jsfiddle.net/5zrxgteh/1/
这里是模拟和刻度函数:
var simulation = d3.forceSimulation()
.force("center", d3.forceCenter().x(width / 2).y(height / 2))
.force("charge", d3.forceManyBody().strength(5))
.force("collide", d3.forceCollide().strength(1).radius(function (d) {
return rScale(d.value * 1.2);
}).iterations(3));
simulation
.nodes(data)
.on("tick", function (d) {
elemEnter.selectAll(".pulse")
.attr("cx", function (d) {
return d.x = Math.max(50, Math.min(width - 50, d.x));
})
.attr("cy", function (d) {
return d.y = Math.max(50, Math.min(height - 50, d.y));
});
elemEnter.selectAll(".circle")
.attr("cx", function (d) {
return d.x = Math.max(50, Math.min(width - 50, d.x));
})
.attr("cy", function (d) {
return d.y = Math.max(50, Math.min(height - 50, d.y));
});
elemEnter.selectAll("text")
.attr("x", function (d) {
return d.x = Math.max(50, Math.min(width - 50, d.x));
})
.attr("y", function (d) {
return d.y = Math.max(50, Math.min(height - 50, d.y));
});
});
【问题讨论】:
标签: javascript d3.js force-layout