Here is a JSFiddle проблемы, с которой я сейчас сталкиваюсь.Как я могу исправить эту сортировку столбцов?
В принципе, у меня есть массив объектов, которые я использую для рисования некоторых баров. После сортировки массива я попытаюсь обновить позиции y
баров, но это не сработает.
Таким образом, это масштаб я использую, чтобы сделать бары:
var yScale = d3.scale.ordinal()
.domain(d3.range(0, numberOfBars))
.rangeBands([0, numberOfBars * barHeight]);
Так что, если у меня есть 3 бара и бар 40px высокий, то я отображение 0-3 => 0-120px ,
Далее, у меня есть функция, которая использует эту шкалу, чтобы вернуть правильное y
положения:
var y = function(d, i) {
return yScale(i);
};
После нанесения брусков с помощью этой y
функции, я затем отсортировать массив данных и попытаться перекроить бары:
barsContainer.selectAll('.bar')
.data(chartData.users)
.transition()
.duration(750)
.delay(delay)
.attr('y', y); // Not working. I thought this would order the bars.
//.attr('y', 120); // This works though. It moves all the bars to this y.
Здесь я в тупике. Поскольку я переупорядочил массив (chartData.users), а так как строки «соединены» с данными, не должны ли бары менять их y
в соответствии с новой позицией данных в массиве?
[Этот пример] (http://jsbin.com/ijepod/1/edit) может помочь – functionoid
Спасибо! Это было очень приятно. Поэтому вместо сортировки массива, а затем привязки его к данным через функцию 'data()', все, что мне нужно было сделать, это вызвать функцию sort() 'на барах. Если вы хотите представить какой-то ответ, я с радостью соглашусь с ним. – Ashitaka
Я рад, что это сработало для вас. Поскольку вы сами это поняли, вы заслуживаете кредита. Если вы нашли комментарий полезным, вы могли бы просто проголосовать за комментарий. – functionoid