在v3.x中,我有一个图表,中间有一个中心节点,左边或右边有一些节点。像这样的东西:
我在
下使用了一种略显笨重的方法tick = function () {
nodes.forEach(function (n) {
if (n.position == "L") {
n.x -= force.alpha() * 80;
}
if (n.position == "R") {
n.x += force.alpha() * 80;
}
});...
我在节点对象上有一个“位置”标记,并将其推到中央固定节点的右侧或左侧。
我想知道v4是否必须使用.force("x", d3.forceX()) & .force("y", d3.forceY())
或.force("xcenter", d3.forceX(width / 2).strength(0.01))
或d3.js v4中的某些其他模拟属性来提供更多“内置”功能。
任何建议/建议都很有用
答案 0 :(得分:0)
不确定这是否是更好的解决方案,但您可以在forceX函数的访问器中放置节点是否应位于左/右的逻辑。
编辑:
d3.forceSimulation(nodes)
.force("x",d3.forceX(function(n){
if (n.position === "L"){
return l_position
}else{
return r_position
})
)