求和计数D3.js

时间:2019-05-15 10:49:23

标签: javascript d3.js

我需要从D3中获取站点数量和站点总数,下面是我的数据结构,它表示一个单向网络流。下面的json由2个对象节点和链接组成

var data = {
    "nodes": [
        {
            "id": "s1",
            "val": 12
        },
        {
            "id": "s2",
            "val": 12
        },
        {
            "id": "s3",
            "val": 12
        },
        {
            "id": "s4",
            "val": 12
        },
        {
            "id": "s5",
            "val": 12
        },
        {
            "id": "s6",
            "val": 12
        }
    ],
    "Links": [
        {
            "n1": "s1",
            "n2": "s2",
            "amount": 10
        },
        {
            "n1": "s2",
            "n2": "s3",
            "amount": 10
        },
        {
            "n1": "s2",
            "n2": "s4",
            "amount": 10
        },
        {
            "n1": "s2",
            "n2": "s6",
            "amount": 10
        },
        {
            "n1": "s3",
            "n2": "s1",
            "amount": 10
        },
        {
            "n1": "s4",
            "n2": "s5",
            "amount": 10
        },
        {
            "n1": "s5",
            "n2": "s6",
            "amount": 10
        }
    ]
};

该站点可以位于n1或n2,这很重要,我需要将其格式化为以下结构(这是正确的输出)

[
    {
        "n": "s1",
        "num": 2,
        "sum": 20
    },
    {
        "n": "s2",
        "num": 4,
        "sum": 40
    },
    {
        "n": "s3",
        "num": 2,
        "sum": 20
    },
    {
        "n": "s4",
        "num": 2,
        "sum": 20
    },
    {
        "n": "s5",
        "num": 2,
        "sum": 20
    },
    {
        "n": "s6",
        "num": 2,
        "sum": 20
    }
]

我尝试使用以下代码,但这根本不起作用

var sums = d3.nest()
  .key(function(d) { return d.n1; })
  .rollup(function(v) { return {
    num: v.length,
    sum: d3.sum(v, function(d) { return d.amount; })
  .entries(data.links);

0 个答案:

没有答案