问题很简单,但我在任何地方都没有看到答案。基本上,我想过滤数据集中某个指标的 NaN,然后显示该指标的前 10 个最高组。我正在使用假组方法,但我似乎无法同时使用条形图的顶部和过滤器。
function remove_empty_bins(source_group) {
return {
all:function () {
return source_group.top(10).filter(function(d) {
return ! isNaN(d.value.attendance_rate) ;
});
}
};
}
此代码不起作用,因为我相信 top 只采用按键排序的前 10 个。如果我想按指标排序,我需要使用 Chart.ordering() 但显然我不能使用它,因为我需要在执行 .top() 之前进行排序。
有什么想法吗?
最佳答案
我认为您没有使用支持上限(饼图、行)的图表之一。对于那些你应该能够使用伪组过滤掉 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);
}
};
}
也许理论上这会慢一些,因为它使用整组键,但我认为除非您有数千个键,否则您不会注意到任何差异。
关于javascript - 如何在 dc.js 中显示前 N 之前过滤 NaN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52572310/