Я строю план-бар в d3.js, в котором каждый бар представляет собой общее количество случаев ТБ в течение месяца. Данные по существу состоят из даты (первоначально строки в формате% Y-% m, но анализируются с использованием d3.time.format.parse) и целого числа. Я бы хотел, чтобы метки осей были относительно гибкими (показывайте только границы года, каждый месяц помещайте метки и т.д.), Но я также хотел бы, чтобы бары были равномерно распределены.
Я могу получить маркировку гибкой оси, когда я использую шкалу дат:
var xScaleDate = d3.time.scale()
.domain(d3.extent(thisstat, function(d) { return d.date; }))
.range([0, width - margin.left - margin.right]);
... но бары не равномерно распределены из-за различного количества дней в каждом месяце (например, февраль и март заметно ближе друг к другу, чем другие месяцы). Я могу получить равномерно распределенные бары с использованием линейного масштаба:
var xScaleLinear = d3.scale.linear()
.domain([0, thisstat.length])
.range([0, width - margin.left - margin.right]);
... но я не могу понять, как использовать метки меток на основе даты. Я попытался использовать обе шкалы одновременно и только генерировать ось из xScaleDate
, просто чтобы увидеть, что произойдет, но шкалы, естественно, не выровняются правильно.
Есть ли простой способ достичь этого, которого я не вижу?