D3 - 从2列节点列表

时间:2016-02-21 05:28:33

标签: json d3.js

我们编写了一个SQL列表和Web服务器的2列电子表格,每天都与其他人交谈:

Source,Target  
sql1,web1  
sql1,web2  
sql2,web2  
sql2,sql1  
sql2,web3  
web2,web3  
web3,web2
web3,sql2

我想创造一个漂亮的'和simple D3 graph,(不一定是那个,甚至是静态图可能会这样)来自上面的数据。流动方向并不重要。每个组(SQL或WEB)都需要使用不同的颜色。

但是,D3要求数据采用json格式。

如何让D3代码接受我的2列数据?
或者如何将我的2列数据转换为D3代码所需的JSON格式?如果有人可以指导,我很乐意编写T-SQL代码。

1 个答案:

答案 0 :(得分:1)

我们的目标是加载您的CSV并转换为强制定向图d3所期望的JSON结构。

要做到这一点:

  //load your CSV via ajax as below
  d3.csv("my.csv", function(json) {
  //load the csv as json
  //array of nodes
  var nodes = [];
  /array of links
  var links = [];
  json.forEach(function(d){
    //check if node is present if not add that in the array to get unique nodes.
    if (nodes.indexOf(d.Source.trim()) <0){
      //sorce node not there so add
      nodes.push(d.Source.trim())
    }
    if (nodes.indexOf(d.Target.trim()) <0){
      //target node not there so add
      nodes.push(d.Target.trim())
    }
    //link to map the nodes with its index.
    links.push({source:nodes.indexOf(d.Source.trim()), target:nodes.indexOf(d.Target.trim())})
  });
  nodes = nodes.map(function(n){
    return {name:n}
  })
  //now the usual code for force graph.

现在将节点和链接提供给Force有向图。

工作代码here