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-