直截了当的问题,但是我在任何地方都没有看到答案。基本上,我想为指标针对NaN过滤数据集,然后显示该指标的前10个最高组。我使用的是伪造的分组方法,但似乎无法同时使用条形图的top和filter。
function remove_empty_bins(source_group) {
return {
all:function () {
return source_group.top(10).filter(function(d) {
return ! isNaN(d.value.attendance_rate) ;
});
}
};
}
此代码将无效,因为我相信仅按键排序的前10名就可以使用。如果我想按指标排序,则需要使用chart.ordering(),但是显然我不能使用它,因为我需要在执行.top()之前进行排序。
有什么想法吗?
答案 0 :(得分:2)
我认为您没有使用支持上限的图表之一(饼图,行)。对于那些用户,您应该能够使用伪造的组过滤掉NaN,然后将数据传入。
从2.1.2版开始,内部dc.js has not used group.top()
用于上限图表。 top和ordering之间的交互太混乱了。
我建议您以与更改这些图表相同的方式来解决您的问题。无需尝试使用group.top()
,而是自己进行排序。然后,很容易进行全部,过滤,排序和加盖(未经测试):
function filter_sort_cap_bins(source_group) {
return {
all:function () {
return source_group
.all()
.filter(d => !isNaN(d.value.attendance_rate))
.sort((a,b) => b.value.attendance_rate - a.value.attendance_rate)
.slice(0, 10);
}
};
}
从理论上讲,这可能会稍微慢一点,因为它可以处理整个键集,但是除非您拥有数千个键,否则我认为您不会注意到任何区别。