javascript - 使用 D3.js 修复力图节点的位置

标签 javascript d3.js graph d3-force-directed

我正在使用 https://github.com/vasturiano/force-graph 中的 force-graph D3 可视化。这似乎提供了很棒的高级 API 来创建力导向图,但我发现很难自定义,因为我是 Javascript 新手。

<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 = Myriel固定为x=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/

相关文章:

javascript - 堆积 D3JS 气泡图

java - 生成数据库 ER 图所需的 Java API

javascript - 如何调整浏览器窗口的大小以使内部宽度为特定值

javascript - promise 的 Node 模式

javascript - 如何将此 JS 代码适应我的 Reactjs 应用程序,以便我可以自定义我的视频播放器?

c - 邻接矩阵图形表示代码崩溃

algorithm - 查找关节点组

javascript - HTML - 哪个元素输出文本?

javascript - D3.js 饼图周围的 flex 文本

javascript - d3.ascending()、d3.descending() 的替代方案,用于将未定义的值排序到底部