堆栈和嵌套不工作将v3转换为v4

时间:2017-12-12 22:57:03

标签: javascript d3.js

我正在将Mike Bostock的原始Stacked Area Chart via Nest example转换为d3 v4,但在调用stack(nest.entries(data))

时,我显然没有做对。

我在这里有一个有效的v3 codepen - https://codepen.io/lebadget/pen/ypLZpJ

这里破坏了v4 codepen - https://codepen.io/lebadget/pen/VywgxG

任何人都可以帮助我理解为什么v4为layers返回一个空数组(第121行是它变坏的地方)。

更新:

我把它缩小到这个:

// v3 const groupedData = nest.entries(data); var layers = stack(groupedData); console.log('layers', layers);

"layers" [Object]是的,它有效!

// v4 const groupedData = nest.entries(data); var layers = stack(groupedData); console.log('layers', layers);

"layers": []没有

1 个答案:

答案 0 :(得分:0)

我在D3群组线程中看到了您的问题请求,以便进行问题跟踪,并在此处查看了您的代码。

我的理解是Stack(D3 v4)需要将转置数据集传递给它。其中每行数据表示给定“堆栈”的所有值图,其中每个键都存在于该行对象上。在您的代码中,当您需要按行分组时,您可以按系列(Group1,Group2,Group3)分组数据。

查看Mike关于此的文档,特别是显示数据如何传递到堆栈的部分:

   var data = [
     {month: new Date(2015, 0, 1), apples: 3840, bananas: 1920, cherries: 960, dates: 400},
     {month: new Date(2015, 1, 1), apples: 1600, bananas: 1440, cherries: 960, dates: 400},
     {month: new Date(2015, 2, 1), apples:  640, bananas:  960, cherries: 640, dates: 400},
     {month: new Date(2015, 3, 1), apples:  320, bananas:  480, cherries: 640, dates: 400}
  ];

https://github.com/d3/d3-shape/blob/master/README.md#_stack

干杯,

汤姆