2016-08-24 34 views
3

使用D3 v3,我格式化數據以匹配Mike的示例以快速啓動我的開發過程。這裏https://github.com/d3/d3-3.x-api-reference/blob/master/Stack-Layout.mdd3.js堆棧佈局從v3升級到v4

var data = [ 
    { 
    "name": "apples", 
    "values": [ 
     { "x": 0, "y": 91}, 
     { "x": 1, "y": 290} 
    ] 
    }, 
    { 
    "name": "oranges", 
    "values": [ 
     { "x": 0, "y": 9}, 
     { "x": 1, "y": 49} 
    ] 
    } 
]; 

示例頁面那麼我不得不這樣做,以獲得堆疊的值是

var stack = d3.layout.stack().values(d=>d.values) 

var layers = stack(data) 

他究竟是怎樣做到在他的榜樣。

但是,在v4中,似乎堆棧函數需要表格格式的數據,所以上面的數據看起來像這樣。

var data = [ 
    {x: 0, apples: 91, oranges: 9}, 
    {x: 1, apples: 290, oranges: 49}, 
]; 

有沒有簡單的方法來保持我的數據格式和使用v4堆棧功能?我似乎無法理解這種做法的新方法。在我目前的數據格式中,我有與數組相關的有用屬性。如果我將數據格式更改爲表格式,則看不到將屬性與值配對的便捷方式。

回答

0

我一直有同樣的問題。不幸的是,新方法似乎不符合API序列化模型實例的方式(有點像您的原始數據);相反,你堅持使用JSON化表格數據格式。當你使用csv轉儲時,我感覺這是有效的,但這通常不是數據庫的組織方式。

我已經發布了相關答案here,將d3.stack()所預期的對象分組格式(例如通過您的示例中的fruit)轉換爲數據點格式(由您的示例中的x座標)。您將可以根據您的具體情況調整代碼。