d3.js堆栈布局从v3升级到v4

时间:2016-08-24 23:55:50

标签: d3.js

使用D3 v3,我将我的数据格式化以匹配Mike的示例以快速启动我的开发过程。此处的示例页面https://github.com/d3/d3-3.x-api-reference/blob/master/Stack-Layout.md

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堆栈功能?我似乎无法找到新的方法来做到这一点。在我当前的数据格式中,我有与数组相关联的有用属性。如果我将数据格式更改为表格,我没有看到将属性与值配对的便捷方法。

1 个答案:

答案 0 :(得分:0)

我一直有同样的问题。不幸的是,新的方式似乎与API序列化模型实例(有点像原始数据)的方式相匹配;相反,你坚持使用JSONified表格数据格式。当您使用csv转储时,我觉得这样做有效,但这通常不是数据库的组织方式。

我发布了一个相关的答案here,它将对象分组的格式(例如,通过示例中的水果)转换为数据点格式(在您的示例中通过x坐标),如{{ 1}}。您将能够根据您的具体情况调整代码。