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

时间:2015-02-20 10:18:39

标签: javascript json d3.js

我有一个力导向图。我使用的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",
        }]}}}

要链接我的节点,请使用:

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});
    });

这只将源和目标放入数组中。我想根据链接的颜色为链接着色:

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

我不能这样做,因为我使用上面填充的edges数组作为我的链接数据,而且它只包含源数据和目标数据,而不是我需要的label数据。 / p>

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

我试过这个:

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颜色链接(边缘)

1 个答案:

答案 0 :(得分:1)

我想问题是coreId: coreId正在创建问题,您还没有在任何地方定义coreId。删除它并尝试。