行图在dc.js / crossfilter中只选择一个条形图?

时间:2015-11-09 04:34:47

标签: javascript dc.js crossfilter

我有一个dc.rowchart,有5个不同的"类别"。最初,所有都被选中。当我点击一个,然后只突出显示那个。当我点击第二个时...我点击的第一个和第二个都突出显示。

如何制作/配置行图,以便每次点击一个栏时只突出显示一个类别?

dc.filter("category1");
dc.filter("category2");

这两个顺序似乎"追加"过滤器而非替换。

2 个答案:

答案 0 :(得分:2)

Ethan的回答几乎就在那里。这可能是无意的,但dc.js似乎没有使用addFilterHandler的返回值,因此您必须修改filters参数才能使其正常工作,如下所示:

myChart.addFilterHandler(function (filters, filter) {
    filters.length = 0; // empty the array
    filters.push(filter);
    return filters;
});

只要您的图表不使用cap(例如带有限制切片的饼图),这就行得很好,因为此处理程序阻止了others组的工作。不幸的是,我还没有为这个案子提出令人满意的解决方案。

答案 1 :(得分:0)

我假设您需要addFilterHandler - https://github.com/dc-js/dc.js/blob/master/web/docs/api-latest.md#dc.baseMixin+addFilterHandler

您可能希望执行以下操作,但未经测试。

myChart.addFilterHander(function (filters, filter) {
    return [filter];
});