【问题标题】:D3.js: Force-directed graph from adjacency matrixD3.js:来自邻接矩阵的力有向图
【发布时间】:2025-12-11 16:10:02
【问题描述】:

我有一个存储为 CSV 文件的邻接矩阵。我想使用 D3.js 将邻接矩阵可视化为力导向的无向加权图。矩阵的元素表示节点之间的距离,如下所示:

AA,A1,A2,A3 A1,0,0.5,1 A2,0.5,0,2 A3,1,2,0

是否有一种简单的方法来读取邻接矩阵并使用 d3 生成无向图形可视化,或者是否应该将这些数据转换为更直接的东西(即“源、目标、权重”CSV 文件或 JSON 图形规范) ?

【问题讨论】:

    标签: d3.js


    【解决方案1】:

    假设数据存储在您发布的矩阵中,您将获得如下节点:

    var nodes = matrix[0].slice(1);
    

    然后你可以像这样构造链接:

    var links = [];
    nodes.forEach(function(d, i) {
      matrix[i+1].slice(1).forEach(function(e, j) {
        if(matrix[i+1][j+1] > 0) {
          links.push({source: i, target: j});
        }
      });
    });
    

    【讨论】: