2

我正在尝试让自己熟悉 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);

根据 wiki,这应该按以下结构组织数据:

[{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"}]}
]

但是当使用 d3.nest 检查时,console.dir(yields)我得到了与使用 d3.nest 之前相同的平面结构。由于我什至无法从文档中获取示例,因此我不知道接下来要尝试什么。帮助一个菜鸟?

4

1 回答 1

8

你想看看nest,没有yieldsyields是你传入的,nest也是你输出的。yields没有改变。

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

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

var nested = nest.entries(yields);

现在,nest是一个对象,您可以将其用于具有年份键的类似数据,并且nested是 one 的输出yields。该key函数返回嵌套对象本身,但entries返回新的嵌套数据。

于 2013-02-21T20:56:48.663 回答