我遇到了 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 个项目是警觉性值最高的项目,而不是最低的。
有人对如何解决这个问题有任何想法,最好不要创建另一个维度吗?
最佳答案
你在这里感到困惑是对的。您可能认为这将是一个受支持的用例,但据我所知,事实并非如此。数据表使用dimension.top
所以它总是会取最高值。
所以我认为没有办法使用具有相反顺序/键的特殊维度。对于其他图表,您可以使用 group.order为了让它返回最低值。但数据表不使用组,因为它不会减少其值。
令人困惑的是,数据表还有一个 order
参数,该参数在这里没有帮助。
希望这是可以接受的。否则我认为你必须仔细研究代码。随时欢迎拉取请求! (最好有测试)
关于d3.js - 控制 dc.js 数据表中显示哪些元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24263226/