2016-12-14 5 views
0

Я хочу настроить ширину гистограмм на основе количества баров, отображаемых на моей гистограмме. Вот моя диаграмма, в которой отображается достаточно записей, которые соответствуют ширине и отображаются красиво. enter image description hereВычисление числа баров на гистограмме в dc.js

Вот еще один сценарий, в котором отображаются только две полосы одинаковой ширины, которая выглядит странно. enter image description here

Для этой ситуации мне нужно настроить ширину диаграмм в соответствии с количеством баров, чтобы моя диаграмма выглядела красиво.

Вот часть моего сценария

var width = ??; // Here how should I calculate width based on the number of bars? 
redrawCustomerCodeBarChart 
     .width(width) 
     .height(400) 
     .margins({top: 10, right: 10, bottom: 70, left: 30}) 
     .dimension(customerNamer) 
     .group(customerNameGroupr) 
     .x(d3.scale.ordinal().domain(newCoh.map(function (d) {return d.customerName; }))) 
     .xUnits(dc.units.ordinal) 
     .elasticY(true) 
     .renderHorizontalGridLines(true) 
     .on('renderlet',function(chart){ 
       chart.selectAll("g.x text") 
       .attr('dx', '-15') 
       .attr('transform', "rotate(-55)"); 
      }) 
     .on('filtered.monitor', function(d) { 
       // return d.key + ' (' + d.value + ')'; 
       if(d.value !== undefined) 
       size= d.value; 
      }) 
     .controlsUseVisibility(true); 
+0

Можем ли мы использовать '.valueAccessor' или' .keyAccessor' в этом случае, который возвращает пару значений ключа – ashishraaj

ответ

1

В большинстве dc.js диаграммы, данные считываются из group.all(). Таким образом, число баров составляет

customerNameGroupr.all().length 

а затем умножьте его соответствующим образом.

Если количество баров может меняться материал фильтруется (с помощью remove_empty_bins, например), то вы хотите, чтобы установить ширину до каждой перерисовки:

chart.on('preRedraw', function(chart) { 
    chart.width(chart.group().all().length * BAR_WIDTH); 
}); 

Это может быть грязным, хотя.

+0

и вы можете сказать, какой атрибут будет использоваться для установки или исправления ширины баров. – ashishraaj

+0

Или мы не можем установить ширину гистограмм как автоматическое. И спасибо Gordon :) – ashishraaj

+1

Интересно, похоже, что ширина бара всегда рассчитывается, и нет возможности установить ее напрямую. Поэтому я думаю, что ваша методика настройки ширины диаграммы - это лучшее, что вы можете сделать. – Gordon