我正在使用 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。随意玩弄它。目前,“排序”按钮没有任何效果(因为该函数尚未正确访问数据)。