强制图有2种力量

时间:2016-10-07 06:57:19

标签: javascript d3.js force-layout d3.js-v4

在v3.x中,我有一个图表,中间有一个中心节点,左边或右边有一些节点。像这样的东西: enter image description here

我在

下使用了一种略显笨重的方法
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中的某些其他模拟属性来提供更多“内置”功能。

任何建议/建议都很有用

1 个答案:

答案 0 :(得分:0)

不确定这是否是更好的解决方案,但您可以在forceX函数的访问器中放置节点是否应位于左/右的逻辑。

编辑:

d3.forceSimulation(nodes)
  .force("x",d3.forceX(function(n){
    if (n.position === "L"){
      return l_position
    }else{
      return r_position
    })
   )