2012-12-03 42 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