var sortBars = function() {
sortOrder = !sortOrder;
// 选择所有rect元素,使用D3提供的sort()方法,排序依据是绑定到它们的数据值
svg.selectAll("rect")
.sort(function(a,b){
if(sortOrder){
return d3.ascending(a,b);//比较函数接受来自两个不同元素的数据值,针对数组中每一对元素都被调用一次,然后它比较a和b,知道所有数组元素都按我们指定的规则排序完毕
}else {
return d3.descending(a,b);//降序
.transition()
.duration(1000)
.delay(function(d,i){return i*10;})
.attr({
x:function(d,i){return i* (w/dataset.length);},
y:function(d){return h-(d*4);}
svg.selectAll("text")
.sort(function(a,b){
if(sortOrder){
return d3.ascending(a,b);
}else {
return d3.descending(a,b);
.transition()
.duration(1000)
.delay(function(d,i){return i*10;})
.attr({
x:function(d,i) {
return i * (w/dataset.length)+40;
y:function(d){return h-(d*4)+14;},
fill:"red",
};