#arrays #d3.js #scale #ordinal
#массивы #d3.js #масштаб #порядковый
Вопрос:
Я использую порядковую шкалу в своей оси:
var xBarScale = d3.scale.ordinal()
.rangeRoundBands([0, width], .1)
.domain(d3.range(data.length));
var xBarAxis = d3.svg.axis()
.scale(xBarScale)
.orient("bottom");
Мои метки тиков находятся в моем массиве данных. Каков наилучший способ форматирования моих значений тиков (с использованием метода D3), чем просто перечисление каждого из них в массиве, как я сделал здесь:
xBarAxis.tickValues([data[0].q,data[1].q,data[2].q,data[3].q,data[4].q]);
Комментарии:
1. поскольку вы используете порядковую шкалу, вы можете поместить свои
data[i].q
значения в массив и использовать этот массив для шкалы:.domain(_yourarray_)
— тогда вы сможете.tickValues
полностью опустить свойство2.
xBarAxis.tickValues(data.map(function(d) { return d.q; }));
Ответ №1:
Я использую D3 v4
, и вот как я бы это сделал:
var xBarScale = d3.scale.ordinal()
.rangeRoundBands([0, width], .1)
.domain(d3.range(data.length));
var xBarAxis = d3.axisBottom( xBarScale )
.tickFormat((d)=> d ' position' ) // just an example of formatting each Tick's text
.tickValues( data.map(d => d.q) ) // creates an Array of `q` values
Что касается моего примера, вы можете настроить tickFormat
форматирование текстовых меток по своему усмотрению