D3堆叠面积图堆栈功能

时间:2014-02-20 21:04:18

标签: d3.js

我正在尝试创建堆积区域图并遇到堆栈功能问题。 x轴是日期,y轴是计数,区域是buildResult。

以下是代码:

var stack = d3.layout.stack()
          .offset("zero")
          .values(function(d) { return d.values; })
          .x(function(d) { return d.date; })
          .y(function(d) { return d.count; });

// Loop through the data and add elements
data.result.forEach(function(d) {
    d.date = new Date(d._id.year, d._id.month-1, d._id.day);
});

// Nest by name aka status
var nested = d3.nest()
  .key(function(d) { return d._id.buildResult; });

// Create the layers
var layers = stack(nested.entries(data.result));

原始数据如下:

{
        "result" : [
                {
                        "_id" : {
                                "month" : 1,
                                "day" : 20,
                                "year" : 2014,
                                "buildResult" : "FAILURE"
                        },
                        "count" : 27
                },
                {
                        "_id" : {
                                "month" : 1,
                                "day" : 20,
                                "year" : 2014,
                                "buildResult" : "SUCCESS"
                        },
                        "count" : 93
                }
        ],
        "ok" : 1
}

我得到的错误来自图层对象:

Cannot read property 1 of undefined

nested.entries(data.result)对象不为空,所以我不确定发生了什么。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

我发现了问题 - 我的数据格式不正确,特别是我传递给stack()的2D数组的长度不一样。