我正在努力熟悉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);
根据维基,这应该按以下结构组织数据:
[{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"}]}
]
但是在使用console.dir(yields)
进行检查时,我得到了与使用d3.nest之前相同的扁平结构。由于我甚至无法从文档中获得示例,我不知道接下来要尝试什么。帮助一个菜鸟?
答案 0 :(得分:8)
您想查看nest
,而不是yields
。 yields
就是你传入的内容,nest
就是你得到的。 yields
不会改变。
d3 wiki可以用更易读的方式编写内容:
var nest = d3.nest()
.key(function(d) { return d.year; })
var nested = nest.entries(yields);
现在,nest
是一个对象,您可以重复使用年份密钥的类似数据,nested
是一个yields
的输出。 key
函数返回嵌套对象本身,但entries
返回新的嵌套数据。