私は D3.js を使用しており、ボタンがクリックされたときにバーを昇順/降順で並べ替えようとしています。しかし、sortBars 関数がオブジェクトから正しい値を返すという問題が発生しています。
var sortOrder = false;
var sortBars = function() {
sortOrder = !sortOrder;
svg.selectAll("rect")
.sort(function(a, b) {
if (sortOrder) {
return d3.ascending(a, b);
} else {
return d3.descending(a, b);
}
})
.transition()
.delay(function(d, i) {
return i * 50;
})
.duration(1000)
.attr("x", function(d, i) {
return xScale(i);
});
};
xScale(i)が返されると、データセットが適切に参照されていないことがわかります。私はそれをi.valueとして配置しようとしました (これは、データセットで名前を付けたものです)。これが正しくないことはわかっていますが、それを変更すると、少なくともバーが動きます。正しいデータムにアクセスするにはどうすればよいですか?
このためにJSFiddleを開発しました。気軽に遊んでみてください。現在、[並べ替え] ボタンは効果がありません (関数がまだデータに正しくアクセスしていないため)。