javascript - 如何在 dc.js 中显示前 N 之前过滤 NaN?

标签 javascript dc.js crossfilter

问题很简单,但我在任何地方都没有看到答案。基本上,我想过滤数据集中某个指标的 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/

相关文章:

javascript - 服务器端 Crossfilter : replicate filterfunction. 如何从函数闭包访问变量

javascript - heatMap boxOnClick时从dataTable中过滤掉0s的行

d3.js - 使用不同颜色的 dc.js 显示原始(有条件)拉丝未拉丝交叉过滤器条

javascript - DC.js numberDisplay with crossfilter 获取总记录

javascript - 呈现选择时的ReactJS setState

javascript - 我无法正确使用光滑的 slider ,它没有显示任何类型的结果

twitter-bootstrap - dc js 使用 bootstrap 选择菜单和样式

javascript - 如何利用 dc.js 和 d3.js 显示值堆积条形图?

javascript - 如何在谷歌地理图表中隐藏工具提示标题(并在工具提示中显示其他信息)

javascript - 你能在 Chrome 扩展中使用 TinyMCE 命令吗?