2012-12-03 40 views

回答

1

默認情況下,分區佈局按其相關數值進行排序,但您可以通過調用sort來設置自己的比較器,該函數需要具有兩個參數的函數進行比較。

要按名稱的酒吧進行排序,只需要改變這些行

https://github.com/devsar/d3talk/blob/master/hierarchical-bar.html#L48-L49

這個

var hierarchy = d3.layout.partition() 
    .value(function(d) { return d.size; }) 
    .sort(function(a, b){ 
     return a.name.toLowerCase() > b.name.toLowerCase(); 
    }); 

如果要反轉排序順序,只返回相反

return a.name.toLowerCase() < b.name.toLowerCase(); 

編輯:

看來當擴展查詢欄時,有些名稱未正確排序。更改比較器的返回值可將其修復(Chrome)

return a.name.toUpperCase().localeCompare(b.name.toUpperCase()); 
+0

謝謝!這是一個非常迅速的答覆。似乎也完美地工作:)我也發現使用layout.tree而不是layout.partition會有訣竅嗎? – Autio