Javascript d3 v4:堆叠嵌套数据?

Javascript d3 v4:堆叠嵌套数据?,javascript,d3.js,Javascript,D3.js,我有一组数据可以嵌套到几个类别中,例如: {id: 1, type: A}, {id: 2, type: A}, {id: 1, type: B}, {id: 1, type: A}, {id: 2, type: B} 将此数据嵌套在id上,可以得到嵌套的数据,其中id作为键,以及包含所有原始值的values数组。我需要的是一个堆叠图,显示id 1有两个a型和一个B型引用,id 2各有一个,等等。这是我正在使用的代码: var nested = d3.nest()

我有一组数据可以嵌套到几个类别中,例如:

{id: 1, type: A},
{id: 2, type: A},
{id: 1, type: B},
{id: 1, type: A},
{id: 2, type: B}
将此数据嵌套在
id
上,可以得到嵌套的数据,其中
id
作为键,以及包含所有原始值的
values
数组。我需要的是一个堆叠图,显示id 1有两个a型和一个B型引用,id 2各有一个,等等。这是我正在使用的代码:

var nested = d3.nest()
                .key( function(d) {
                    return d.Id
                })
                .entries(data);

var stack = d3.stack()
                .keys(['A','B'])
                .offset(d3.stackOffsetExpand);

我想要这些作为百分比,因此是
堆栈偏移量expand
。但是,这给了我空堆栈值,可能是因为我希望堆栈函数使用的
类型
字段隐藏在
数组中。使用
堆栈调用的
.value
函数,我可以看到它看到的数据实际上是每个嵌套数组的整个数据块(即
键:1,值:[{all objects with id 1 here}]
)。我只是不知道如何使用该函数告诉它开始计算
类型
属性…

这是根据数据计算百分比的一种方法。我首先设置键,然后使用
rollup
nest
函数中滚动值。然后,我计算每个键的百分比

var raw_data = [{id: 1, type: "A"},
{id: 2, type: "A"},
{id: 1, type: "B"},
{id: 1, type: "A"},
{id: 2, type: "B"}];

var data = d3.nest()
    .key(function(d) {return d.id;})
    .rollup(function(d) { return d.length; })
    .entries(raw_data);

    data.forEach(function(d) {
    d.percentage = d.value  / raw_data.length;
    console.log(d.key + ": " + d.percentage*100);
});

jsFIDLE-

这是根据数据计算百分比的一种方法。我首先设置键,然后使用
rollup
nest
函数中滚动值。然后,我计算每个键的百分比

var raw_data = [{id: 1, type: "A"},
{id: 2, type: "A"},
{id: 1, type: "B"},
{id: 1, type: "A"},
{id: 2, type: "B"}];

var data = d3.nest()
    .key(function(d) {return d.id;})
    .rollup(function(d) { return d.length; })
    .entries(raw_data);

    data.forEach(function(d) {
    d.percentage = d.value  / raw_data.length;
    console.log(d.key + ": " + d.percentage*100);
});
JSFiddle-