我使用從下面的代碼來獲得獨特的計數.. Crossfilter reduce :: find number of uniques如何排序從「crossfilter,減少查找的用戶號碼的,不重複」
我用在這裏找到排序方法「dc.js/crossfilter -> How to sort data in dc.js chart (like row) - Ascending x Descending獲得前10名」。
當我在行圖中顯示所有水平條時,按照升序/降序排序。但是當我試圖只顯示前10名時,那麼訂單不是按價值而是按照組的字母順序。
var donor=cf.dimension (function(d){ return d.donor;});
var donorCount=donor.group().reduce(
function (p, d) {
if (d.projectTitle in p.projectTitle)
p.projectTitle[d.projectTitle]++;
else {
p.projectTitle[d.projectTitle] = 1;
p.projectCount++;
}
return p;
},
function (p, d) {
p.projectTitle[d.projectTitle]--;
if (p.projectTitle[d.projectTitle] === 0) {
delete p.projectTitle[d.projectTitle];
p.projectCount--;
}
return p;
},
function() {
return {
projectCount: 0,
projectTitle: {}
};
});//this code is borrowed from http://jsfiddle.net/djmartin_umich/3LyhL/
.....
donorChart.width(320).height(600)
.dimension(donor)
.group(donorCount)
.valueAccessor(function (d) {
return d.value.projectCount;
})//borrowed code
.label(function(d){return "("+d.value.projectCount+")"+d.key;})
.colorAccessor(function (d){return 1;})
.elasticX(true)
.ordering(function(d){ return -d.value.projectCount; })
.data(function(d) {
return d.top(10);
});//this top ten code does not work as expected
沒有最後三行代碼,圖表顯示按值排序的所有捐助者。我對JavaScript很陌生,無法修改最後三行來完成我的工作。
受到crossfilter API參考的打擊 –