【问题标题】:D3 stacked area chart stack functionD3堆积面积图堆积功能
【发布时间】:2014-03-22 02:09:29
【问题描述】:

我正在尝试创建堆叠面积图并遇到了 stack 函数的问题。 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) 对象不为空,所以我不确定发生了什么。感谢您的帮助!

【问题讨论】:

  • 很难看到更多代码......但它不应该是.key(function(d) {return d._id.buildResult;});吗?
  • 是的,我复制了错误的行。我有它,你有它,但仍然得到错误。将修复帖子。

标签: d3.js


【解决方案1】:

我发现了问题 - 我的数据格式不正确,特别是我传递给 stack() 的二维数组的长度不完全相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多