2015-03-02 50 views
1

我已經在D3中創建了一個條形圖,選擇了單選按鈕條形圖並且我想按升序或降序排序。當點擊它不排序按鈕,所以我不知道是什麼文牛逼錯誤的,但任何幫助,將不勝感激:排序D3中的條形圖不起作用

http://jsfiddle.net/m4s5m5je/2/ [前添加分類]

後,我把排序按鈕,條形圖沒有按」 T顯示了,太排序按鈕:

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); 
+0

你應該得到的按鈕並保存到變量試圖訪問它。添加下一行 - var sort_btn = document.getElementById('sort')' - before'sort_btn.on('click'' – 2015-03-02 06:33:48

回答

0

你錯過了結尾括號});

和移動sort_btn實現了plot.call

爲了使分選的作品,你應該解決更多的地方。

updated 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); 

}); 
+0

可以給我一些想法,因爲我是D3新手。 – Pando 2015-03-02 08:19:08

+0

我沒有經過你的邏輯,我能想到的排序是每次你點擊排序按鈕,排序數據和重繪圖表。我也不是d3的專家,也許還有另一個更好的解決方案:) – 2015-03-02 08:23:39