我正在尝试创建堆积区域图并遇到堆栈功能问题。 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)
对象不为空,所以我不确定发生了什么。谢谢你的帮助!
答案 0 :(得分:1)
我发现了问题 - 我的数据格式不正确,特别是我传递给stack()的2D数组的长度不一样。