控制在dc.js数据表中显示哪些元素

时间:2014-06-17 11:59:42

标签: d3.js dc.js crossfilter

我在使用dc.js和crossfilter时遇到了一个棘手的问题。

我在维度上有一个数据表,它可以正确显示我的数据。问题是我想显示“最差”数据项,但数据表选择过滤器中的“最佳”项目。

以下是当前表代码的一部分。

var alertnessDim = ndx.dimension(function(d) {return d.alertness1;});

dc.dataTable(".dc-data-table")
    .dimension(alertness1)
    .group(function (d) {
        return d.DATE.getYear();
    })
    .columns([
        function (d) {
            return d.DATE;
        },
        function (d) {
            return d['FLEET'];
        },
        function (d) {
            return d.alertness1;
        }

    ])
    .sortBy(function (d) {
        return d.alertness1;
    })
    .order(d3.ascending); 

这正确地连接到交叉过滤器并按正确的顺序对项目进行排序,但它显示的25个项目是具有最高警戒度值而不是最低值的项目。

任何人都有任何关于如何解决这个问题的想法,而不是创造另一个维度?

2 个答案:

答案 0 :(得分:2)

你在这里感到困惑是正确的。你会认为这将是一个支持的用例,但据我所知,它不是。数据表使用dimension.top,因此它始终采用最高值。

所以我不认为有一种方法可以使用具有相反排序/键的特殊维度。对于其他图表,您可以按顺序使用group.order(heh)使其返回最低值。但是数据表并没有使用组,因为它没有减少它的值。

令人困惑的是数据表还有一个order参数,在这里没有帮助。

希望这是可以接受的。否则我认为你必须在代码中四处寻找。拉请求总是欢迎! (最好通过测试)

答案 1 :(得分:0)

在特定列上实现降序排序的一种快速方法是按负值排序:   .sortBy(function(d){return - d.ALARM_OCCURRENCE;}); //首先显示最高警报数