我正在使用https://github.com/vasturiano/force-graph中的force-graph D3可视化。这似乎提供了强大的高级API来创建力导向图,但是由于我是Java语言的新手,因此我很难对其进行自定义。

<script src="//unpkg.com/force-graph"></script>
<script src="http://d3js.org/d3.v4.min.js" charset="utf-8"></script>

<script>

fetch('data.json').then(res => res.json()).then(data => {
      const Graph = ForceGraph()
      (document.getElementById('graph'))
        .graphData(data)
        .nodeAutoColorBy('group')
        .linkSource('source')
        .linkTarget('target')
})

</script>


JSON数据如下所示:

{
  "nodes": [
    {"id": "Myriel", "group": 1},
    {"id": "Napoleon", "group": 1}
  ],
  "links": [
    {"source": "Napoleon", "target": "Myriel", "value": 1},
    {"source": "Mlle.Baptistine", "target": "Myriel", "value": 8}
  ]
}


我正在尝试固定特定节点的位置,例如id = Myrielx=500y=500。根据d3强制documentation,我需要指定fxfy。如何检索特定节点的ID来设置这些属性?任何帮助是极大的赞赏!

最佳答案

我找到了解决方案:

.nodeVal(node => {
  node.fx = 500;
  node.fy = 500
})


使用nodeVal方法,我可以访问节点的属性以对其进行修复。添加if语句仅在我需要特定节点的情况下才可以更改它。感谢大家的帮助!

关于javascript - 使用D3.js修复力图节点的位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60614548/

10-09 17:02