2013-02-21 297 views
2

我想讓自己熟悉D3並且很難以正確的格式獲取數據。我有一個對象數組,每個對象中都有一個「日期」鍵,我試圖使用d3.nest按日期對它們進行分組,但是甚至無法使用該示例(從https://github.com/mbostock/d3/wiki/Arrays獲取)。我已經淡化了它的基本要素,但是代碼是從d3 wiki中取得的。將數據嵌套到D3.js中

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之前。由於我甚至無法從文檔工作中獲得示例,因此我不知道接下來要嘗試什麼。幫助noob出來?

回答

8

你想看看nest而不是yieldsyields是你通過的並且nest是你得到的。 yields不會更改。

D3的維基可以在一個更可讀的方式有書面的東西:

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

var nested = nest.entries(yields); 

現在,nest是一個對象,你可以重複使用同一年鍵類似的數據,並nested是一個yields的輸出。 key函數返回嵌套對象本身,但entries返回新的嵌套數據。