D3中的排序条形图不起作用

Sorting bar chart in D3 not working

本文关键字:条形图 不起作用 排序 D3      更新时间:2023-09-26

我在D3中创建了一个条形图,选择单选按钮后会显示条形图,我想按升序或降序排序。当点击按钮时,它不是排序,所以我不知道出了什么问题,但如果有任何帮助,我们将不胜感激:

http://jsfiddle.net/m4s5m5je/2/【添加排序前】

在我按下排序按钮后,条形图不会显示,排序按钮也不会显示:

http://jsfiddle.net/m4s5m5je/3/

var sort_btn = document.getElementById('sort')
sort_btn.on("click", function(){
    var self = d3.select(this);
    var ascending = function(a,b){
            return a.value - b.value;
    };
    var descending = function(a,b){
            return b.value - a.value;
    }
    var state = +self.attr("state");
    var txt = "Sort data: ";
    if(state === 0){
            data.sort(ascending);
            state = 1;
            txt += "descending";
    } else if(state === 1){
            data.sort(descending);
            state = 0;
            txt += "ascending";
    }
    self.attr("state", state);
    self.html(txt);

您错过了结束括号})

并将sort_btn实现移出plot.call

为了使排序工作正常,您应该修复更多的位置。

更新的fiddle

plot.call(chart, {
          data: data,
          axis:{
            x: xAxis,
            y: yAxis
          },
          gridlines: yGridlines
        }); 
var sort_btn = document.getElementById('sort')
sort_btn.on("click", function(){
var self = d3.select(this);
var ascending = function(a,b){
        return a.value - b.value;
};
var descending = function(a,b){
        return b.value - a.value;
}
var state = +self.attr("state");
var txt = "Sort data: ";
if(state === 0){
        data.sort(ascending);
        state = 1;
        txt += "descending";
} else if(state === 1){
        data.sort(descending);
        state = 0;
        txt += "ascending";
}
self.attr("state", state);
self.html(txt);
});