gpt4 book ai didi

javascript - d3 v4 : Stacking nested data?

转载 作者:行者123 更新时间:2023-11-28 04:49:19 25 4
gpt4 key购买 nike

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

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

我希望这些为百分比,因此需要 stackOffsetExpand。然而,这给了我空堆栈值,大概是因为我希望堆栈函数使用的 type 字段隐藏在 values 数组内。使用 stack 调用的 .value 函数,我可以看到它看到的数据确实是每个嵌套数组的整个数据 block (即 key: 1 ,值:[{此处 id 为 1 的所有对象}])。我只是不知道如何使用该函数来告诉它开始计数 type 属性...

最佳答案

这是根据数据计算百分比的一种方法。我首先设置键,然后使用 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 - https://jsfiddle.net/do4ym1L2/

关于javascript - d3 v4 : Stacking nested data?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43081815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com