如何将所有数据添加到我的数组以用于色标?

How to add all data to my array to use with a color scale?

我有一个力导向图。我使用的 JSON 数据如下所示:

var network = {
  network: {
    data: {
      edges: [
        {
          directed: true,
          id: "B_FRED_BEN",
          "source": "FRED",
          "target": "BEN",
          "classif": "A",
          "label": "A"
        }],
        nodes: [
        {
          "id": "FRED",
          "classif": "B",
          "createdOn": "2013-09-09",
          "label": "2",
        }]}}}

对于 link 我的节点,我使用这个 :

nodesData = network.network.data.nodes;
    edgesData = network.network.data.edges;
edges = [];
    edgesData.forEach(function(e) { 
    var sourceNode = nodesData.filter(function(n) { return n.id === e.source;})[0];
    var targetNode = nodesData.filter(function(n) { return n.id === e.target; })[0];

    edges.push({source: sourceNode, target: targetNode});//, value: e.Value});
    });

这只会将源和目标放入数组中。我想根据它拥有的数据为 link 着色:

links.style("stroke", function(d) { clog(d.label) });

我不能这样做,因为我正在使用上面填充的 edges 数组作为 link 的数据,并且其中只有源数据和目标数据,而不是 label 我需要的数据。

如何将其余数据添加到边缘数组?

我已经试过了:

nodesData = network.network.data.nodes;
    edgesData = network.network.data.edges;

    edges = [];
    edgesData.forEach(function(e) { 
    var directed = e.directed,
        id = e.id,
        sourceNode = nodesData.filter(function(n) { return n.id === e.source;})[0],
        targetNode = nodesData.filter(function(n) { return n.id === e.target; })[0],
        classif = e.classif,
        label = e.label;

    edges.push({directed: directed, id: id, source: sourceNode, target: targetNode, classif: classif, label: label});//, value: e.Value});
    });

这行不通:/

我想要的是根据数据label中的内容links(边缘)着色

我猜是 coreId: coreId 造成了问题,您没有在任何地方定义 coreId。删除它并尝试。