2013-06-03 1 views
10

Я потратил большую часть дня, пытаясь получить хорошую гистограмму по оси Date, в той мере, в которой я отправляю свой первый вопрос о stackoverflow.d3 + crossfilter: Date-axis отображает пиксельные полосы

bars are too thin

Ось и укладывание только так, как я хочу его, однако бары очень тонкий для нет (для меня) видимой причины. Другими словами, я бы очень признателен за помощь.

Вот минимизированы версия (я использую dc.js библиотеку, но я довольно уверен, что проблемы на d3 + crossfilters имени):

var jsonstr = [{"timestamp": "2013-06-13T11:04:24.729Z"},{"timestamp": "2013-06-17T11:03:24.729Z"},{"timestamp": "2013-06-17T11:02:24.729Z"},{"timestamp": "2013-06-19T11:02:14.129Z"}]; 

var ndx = crossfilter(jsonstr); 

var timestampD = ndx.dimension(function (d) { 
    return new Date(d.timestamp); 
}); 

var timestampDG = timestampD.group(function (d) { 
    return d3.time.day(d); 
}); 

var barChart = dc.barChart("#dc-bar"); 
barChart.width(500) 
    .height(250) 
    .dimension(timestampD) 
    .group(timestampDG) 
    .x(d3.time.scale().domain([(new Date(2013,05,12)), (new Date(2013,05,20))]).nice(d3.time.day)) 
    .xAxis().tickFormat(function (x) { 
     return x.getDate() + "/" + (x.getMonth()+1); 
    }); 

dc.renderAll(); 

ответ

13

Я думаю, что проблема на самом деле с тем, как вы используете dc.js; Вы не указали, что units в BarChart должно быть в Попробуйте это:.

barChart 
    .width(500) 
    .height(250) 
    .dimension(timestampD) 
    .xUnits(d3.time.days) 
    .ect 
+0

Хорошо заметили! Это сделал трюк. Большое спасибо! –

+2

Я потратил ~ 5 часов, разочарованных этой проблемой в прошлом месяце; Рад, что я мог избавить кого-то от боли. –

1

Для тех, кто еще с этой проблемой, для которых ответ Адама, кажется, не делать ничего, убедитесь, что вы не имеете elasticX установлен как истинный, как я.

+1

Спасибо! Я боролся с моей шкалой времени (ничего не было видно) ultil просто наткнулся на ваш комментарий. –

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

  • Нет связанных вопросов^_^