如何避免网络图节点重叠?

时间:2017-10-22 23:14:38

标签: vis.js vis.js-network

我正在使用Visjs并使用文本显示矩形节点。一些节点可以有几行文本,所以我添加了一个启发式算法来大致计算出换行的位置,以避免非常宽但非常短的节点中非常宽的单行文本块。

麻烦的是,即使启用了物理,我仍然会得到重叠的节点。

是否有可能告诉布局引擎,在任何情况下(或物理模型),任何两个节点是否应重叠?

2 个答案:

答案 0 :(得分:1)

好吧,看看physics configuration example:正如您所看到的,barnesHut解算器具有avoidOverlap属性,即使springConstant等于零,也会阻止重叠。试试这个:

var options = {
  "physics": {
    "barnesHut": {
      "springConstant": 0,
      "avoidOverlap": 0.2
    }
  }
}

并调整常量以满足您的需求(上面链接的示例对此非常有用)。

答案 1 :(得分:0)

我在选项中使用了levelSeparationnodeDistance来影响水平和垂直距离:

var options = {
    layout: {
        hierarchical: {
            direction: "LR",
            sortMethod: "directed",
            levelSeparation: 300
        }
    },
    physics: {
      hierarchicalRepulsion: {
        nodeDistance: 140
      }
    },
    edges: {...},
    nodes: {...}
}

你有一个例子吗?