2014-02-20 2 views
0

Я пытаюсь создать диаграмму с разбивкой по областям и столкнуться с проблемой с функцией стека. Ось x - это дата, ось y подсчитывается, а область - buildResult.D3 сложена функция диаграммы стоп-кадра

Вот код:

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

трудно, не видя больше кода ... но не должно быть '.key (function (d) {return d._id.buildResult;});'? – FernOfTheAndes

+0

Да, я скопировал неправильную строку. У меня оно есть, как у вас есть, но все равно получаю ошибку. Зафиксирует сообщение. – JamesE

ответ

1

Я понял, что проблема - мои данные не были отформатированы правильно, в частности, 2D-массив, который я передавал в стек(), был не такой же длины.

Смежные вопросы