如何计算d3嵌套汇总中的不同值?

时间:2016-01-18 12:08:28

标签: d3.js count distinct nest rollup

我使用d3.nest.rollup计算数据中的叶子数。数据来自csv,并由d3转换为json。 csv看起来像这样:

Color,ID,Animal
Green,1,Dog
Red,2,Cat
Red,3,Cat
Red,3,Dog

请注意,ID#3有两种不同的动物,但我想在此数据中计算不同的ID,因此每种颜色都应返回count = 1。

简单汇总函数会返回所有叶子的计数,即1,1,2,而我需要按颜色分组并计算该组中的不同ID ...

1 个答案:

答案 0 :(得分:0)

你需要做一个两级的下一个(第一个颜色,然后是id),然后在第二个组上滚动,如下所示:

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

console.log(nested_data);

会给你:

Console view of rolled-up and nested data

这里有关于嵌套和汇总的精彩教程:http://bl.ocks.org/phoebebright/raw/3176159/