2013-12-10 9 views
0

Я пытаюсь отобразить ширину столбца dc, crossfilter и d3 временной шкалы. Данные в формате JSON идет с 1989 по 2010 год и выглядит следующим образом:Неверные метки по оси x при использовании диаграммы временных рядов

[{ 
    year: 1999, 
    events: 40 
},{ 
    year: 1996, 
    events: 25 
}, 
... 
] 

Для того, чтобы сделать это у меня есть следующий код:

var volumeChart = dc.barChart("#yearly-chart"); 
var ndx = crossfilter(data); 
var yearDim = ndx.dimension(function(d) { 
    return d.year; 
}); 

var countPerYear = yearDim.group().reduceSum(function(d) {return d.events;}); 

volumeChart 
    .width(700) 
    .height(200) 
    .margins({top: 50, right: 50, bottom: 20, left: 40}) 
    .dimension(yearDim) 
    .group(countPerYear2) 
    .elasticY(true) 
    .x(d3.time.scale().domain([1989, 2011])) 

volumeChart.render() 

Этот вид работ, но год этикетки в X ось странным образом перепутались:

Graph with wrong X axis-labels

Если я использую Date объекты для определения x оси, как:

x(d3.time.scale().domain([new Date(1989, 1, 1), new Date(2010, 12, 31)])) 

Я не получаю данных на графике, хотя похоже, что это должен быть правильный способ сделать это. Что я делаю не так?

+1

Объекты даты - это действительно путь, но вам необходимо проанализировать даты в вашем JSON и в таких объектах. Поэтому везде, где вы загружаете данные, также анализируйте даты. –

+0

Так оно и было, это имеет смысл. Позаботьтесь написать это как ответ, чтобы я мог отметить это как правильно? – GiantSquid

+0

Несомненно, сделаю, спасибо. –

ответ

1

Объекты даты - это действительно путь, но вам нужно проанализировать даты в вашем JSON и в таких объектах. Поэтому везде, где вы загружаете данные, также анализируйте даты.

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