2014-09-30 3 views
0

Есть ли простой способ сортировки баров (по возрастанию или убыванию) по Nvd3discreteBarChart или на HorizontalBarChart. Я думаю, что функция должна быть добавлена ​​к основному Lib (Nvd3), так что вариант может быть использован, как показано ниже:Сортировать бары на nvd3 картах

.sortAscending(true) //Used for ascending bars according to their value 
 
    or 
 
.sortDescending(true) //Used for descending bars according to their value

+0

Я просто ответил на этот вопрос здесь: сортировка http://stackoverflow.com/a/34946198/1339081 –

ответ

1

попробовать это, я реализован в моем приложении, включите это в ваш метод addGraph перед возвращением картографического объекта

var parent = $('svg').parent().attr("id"); 

// добавить кнопку на DIV и дать OnClick функцию EVET

d3.select("#"+parent).append('a').attr('href',"javascript:void(0)") 
.text('Sort').on("click", sortBars).html('Sort'); 

// функция

var sortOrder; 
var sortBars = function(){ 

    if(!sortOrder || sortOrder == null) 
     sortOrder = true; 
    else sortOrder = false; 
     var historicalBarChart11 ; 
    var data1 = JSON.parse(JSON.stringify(data));//cloning object 
    sortdata = data1[0].values; 
     sortdata.sort(function(a,b){ 
     if(sortOrder) 
      return a["value"]-b["value"];//[1]; 
     else 
      return b.value-a.value;//[1]; 
     }); 
     for(var i=0;i<sortdata.length;i++){ 
      data1[0]["values"][i] = sortdata[i]; 
     } 
     d3.select('svg').datum(data1).transition().duration(500).call(chart); 
    } 
+0

ПРИМЕЧАНИЕ есть небольшая ошибка: в сортировкой: если (SortOrder) return a ["value"] - b ["value"]; // [1]; else return b ["value"] - a ["value"]; // [1]; – shev72

Смежные вопросы