Я хочу использовать порядковую шкалу на оси x с именами в качестве значений.

let xScale = d3.scaleOrdinal()
            .domain(['Tony', 'Jessica', 'Andrew', 'Emily', 'Richard'])
            .range([0, bodyWidth]);


 container.append('g')
       .style('transform', 'translate(0px, 200px)')
       .call(d3.axisBottom(xScale))
       .tickFormat(clients, (d)=> d + ' position')
       .tickValues( clients.map(d => d.name) );

Но я получаю ошибку:

TypeError: container.append(…).style(…).call(…).tickFormat is not a function.

Я использую d3.js V5.

Sourav Kumar

Ответов: 1

Ответы (1)

Пара проблем.

Во-первых, у вас .tickFormat вызывается при возврате .call, а не цепочки .axisBottom. Вот почему вы получаете, что это не функция, потому что .call не возвращает ось.

Во-вторых, .tickFormat принимает единственный аргумент, который является функцией, вызываемой при создании каждого тика оси. Вы передаете ей данные и как функцию-домен. Каждое значение домена будет передано в функцию .tickFormat.

2022 WebDevInsider