javascript - 如何在 dc.js 中显示前 N 之前过滤 NaN?
问题描述
直截了当的问题,但我在任何地方都没有看到答案。基本上,我想过滤我的数据集以查找指标的 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没有在 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);
}
};
}
也许从理论上讲,这会慢一些,因为它可以使用整套键,但我认为除非您有数千个键,否则您不会注意到任何区别。
推荐阅读
- speech-recognition - Microsoft 语音识别结果的格式(挪威语)
- dataset - BIRT:从一个数据集中取值到另一个数据集中
- jenkins - 如何配置依赖于其他作业的管道作业只安排一次
- angular - 如何使用Angular将数组存储在Firebase中
- html - 2个溢出的块:相互滚动
- c# - 按住按钮时如何重复功能(新的统一输入系统)
- c++ - 单选按钮未正确重绘
- php - Laravel,在重复输入上返回 json 错误
- python - 将元组中的值提取到列中
- python - 当某些 int 列表为空时,如何将 int 列表的 List 传递给 jitclass?