我在使用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个项目是具有最高警戒度值而不是最低值的项目。
任何人都有任何关于如何解决这个问题的想法,而不是创造另一个维度?
答案 0 :(得分:2)
你在这里感到困惑是正确的。你会认为这将是一个支持的用例,但据我所知,它不是。数据表使用dimension.top
,因此它始终采用最高值。
所以我不认为有一种方法可以使用具有相反排序/键的特殊维度。对于其他图表,您可以按顺序使用group.order(heh)使其返回最低值。但是数据表并没有使用组,因为它没有减少它的值。
令人困惑的是数据表还有一个order
参数,在这里没有帮助。
希望这是可以接受的。否则我认为你必须在代码中四处寻找。拉请求总是欢迎! (最好通过测试)
答案 1 :(得分:0)
在特定列上实现降序排序的一种快速方法是按负值排序:
.sortBy(function(d){return -
d.ALARM_OCCURRENCE;}); //首先显示最高警报数