2016-08-24 35 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坐标)。您将可以根据您的具体情况调整代码。