我需要从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);