Я строю гистограмму с помощью dc.js и хочу, чтобы по оси X отображались 12 месяцев в году.
Пока что у меня есть рендеринг, показывающий первый тик как время дня (18:00), а все последующие тики как десятичные (тысячные).
Я видел похожий вопрос (https: // stackoverflow.com/questions/21392997/dc-js-x-axis-hour-labels-appear-as-thousandths#=), но ответ заключался в преобразовании миллисекунд в большие единицы, что невозможно с месяцами (насколько я знаю).
Вот мой код. Заранее спасибо за помощь.
var parseDate = d3.time.format("%m/%d/%Y").parse;
data.forEach(function(d) {
d.date = parseDate(d.weekStart);
d.month = d.date.getMonth();
});
var monthDim = ndx.dimension(function(d) {return d.month;});
var milesByMonth = monthDim.group().reduceSum(dc.pluck('miles'));
//set range for x-axis
var minDate = dateDim.bottom(1)[0].date;
var maxDate = dateDim.top(1)[0].date;
var barChart = dc.barChart("#myBarChart");
barChart
.width(800).height(200)
.margins({top: 10, right: 10, bottom: 20, left: 60})
.dimension(monthDim)
.group(milesByMonth)
.gap(40)
.transitionDuration(1500)
.yAxisLabel('Miles Per Month')
.renderHorizontalGridLines(true)
.x(d3.time.scale().domain([minDate,maxDate]))
//.x(d3.scale.ordinal())
//.xUnits(dc.units.ordinal)
//.x(d3.time.scale().domain([new Date(2012, 0, 1), new Date(2012, 11, 31)]))
//.round(d3.time.month.round)
.elasticX(true)
.elasticY(true);