【发布时间】:2014-02-03 21:36:47
【问题描述】:
如何在 dc.js 图表(如行)中对数据进行排序 - 升序 x 降序
我想按指定的属性(如'avg' -> 升序)对图表(行/列)重新排序
我正在尝试使用“.top()”...但没有成功
谢谢
草稿如下 jsfiddle -> ewr5Z/2/
【问题讨论】:
标签: sorting charts d3.js crossfilter dc.js
如何在 dc.js 图表(如行)中对数据进行排序 - 升序 x 降序
我想按指定的属性(如'avg' -> 升序)对图表(行/列)重新排序
我正在尝试使用“.top()”...但没有成功
谢谢
草稿如下 jsfiddle -> ewr5Z/2/
【问题讨论】:
标签: sorting charts d3.js crossfilter dc.js
您可以使用订购方式:
chart.ordering(function(d){ return -d.value })
如果你写一个自定义reduce,你可以有更大的灵活性:
priceDimension = ndx.dimension(function(d) {return d.part_number; });
priceGroup = priceDimension.group().reduce(
function (p, v) {
++p.count;
p.sumPrice += v.price;
p.avgPrice = p.sumPrice/p.count;
return p;
},
function (p, v) {
--p.count;
p.sumPrice -= v.price;
p.avgPrice = p.sumPrice/p.count;
return p;
},
function () {
return { count:0, sumPrice:0, avgPrice};
});
....
chart.ordering(function(d){ return d.value.avgPrice});
如果您希望用户能够更改排序顺序,您需要构建一个排序按钮来更改排序并重新呈现图表。
【讨论】:
value更改为我的情况下的值的名称sessions像这样.ordering(function(d){ return -d.sessions})它不会工作。如果你只是让它如图所示,它会按值排序(无论值的名称是什么)