Я хочу разбивать гистограмму, используя строки в качестве меток для тиков по оси x (например, год 1, год 2 и т.д. вместо 0,1,2 и т.д.).
Я начал с использования числовых значений для оси x (например, 0,1,2,3 и т.д.) следующим образом:
1) Я создаю свои диапазоны:
x = d3.scale.ordinal()
.domain(d3.range(svg.chartData[0].length)) //number of columns is a spreadsheet-like system
.rangeRoundBands([0,width], .1);
y = d3.scale.linear()
.domain(Math.min(d3.min(svg.chartData.extent),0), Math.max(d3.min(svg.chartData.extent),0)])
.range([height, 0])
.nice();
2) Сделайте оси:
d3.svg.axis()
.scale(x);
3) Перерисовать оси:
svg.select(".axis.x_axis")
.call(make_x_axis().orient("bottom").tickSubdivide(1).tickSize(6, 3, 0));
Это хорошо работает с метками числовой оси по умолчанию.
Если я попытаюсь использовать массив строк для x tickValues, как это....
d3.svg.axis()
.scale(x).tickValues(svg.pointsNames); //svg.pointsNames = ["Year 1", "year 2", etc.]
... когда я перерисовываю диаграмму (с изменениями данных или настроек или без них), эти метки меняются следующим образом.
Обратите внимание, что Col 1 заменяет Col 0 и наоборот.
Вы знаете, почему это происходит?