在D3.js中嵌套数据

Ale*_*tty 2 d3.js

我正在努力熟悉D3,并且很难以正确的格式获取数据.我有一个对象数组,每个对象都有一个"日期"键,我正在尝试使用d3.nest按日期对它们进行分组,但是甚至无法使示例工作(取自https:// github .com/mbostock/d3/wiki/Arrays).我已经把它浇灌到了必需品,但代码是从d3 wiki中获取的.

var yields = [{yield: 27.00, variety: "Manchuria", year: 1931, site: "University Farm"},
              {yield: 48.87, variety: "Manchuria", year: 1931, site: "Waseca"},
              {yield: 27.43, variety: "Manchuria", year: 1932, site: "Morris"}]

var nest = d3.nest()
    .key(function(d) { return d.year; })
    .entries(yields);
Run Code Online (Sandbox Code Playgroud)

根据维基,这应该组织以下结构中的数据:

[{key: 1931, values: [
    {yield: 27.00, variety: "Manchuria", year: 1931, site: "University Farm"},
    {yield: 48.87, variety: "Manchuria", year: 1931, site: "Waseca"}]},
 {key: 1932, values: [
    {yield: 27.43, variety: "Manchuria", year: 1932, site: "Morris"}]}
]
Run Code Online (Sandbox Code Playgroud)

但是在使用时,console.dir(yields)我使用d3.nest获得与之前相同的扁平结构.由于我甚至无法从文档中获得示例,我不知道下一步该尝试什么.帮助一个菜鸟?

And*_*Mao 8

你想要看nest,而不是yields.yields是你传入的,nest是你得到的.yields不会改变.

d3 wiki可以用更易读的方式编写内容:

var nest = d3.nest()
    .key(function(d) { return d.year; })

var nested = nest.entries(yields);
Run Code Online (Sandbox Code Playgroud)

现在,nest是一个对象,您可以重复使用年份密钥的类似数据,并且是一个对象nested的输出yields.该key函数返回嵌套对象本身,但entries返回新的嵌套数据.