如果过滤后dc.js中的行图值等于零,我们如何隐藏。我们有这样的代码:
var kurum=data.dimension(function(d){return ""+ d.KURUM;});
var kurumGroup=kurum.group().reduceSum(function(d){return +d.INSIDANS});
kurumRowMapChart
.width(300)
.height(200)
.margins({top: 5, left: 10, right: 10, bottom: 20})
.dimension(kurum)
.group(kurumGroup)
.colors(d3.scale.category10())
.elasticX(true)
.ordering(function(d) { return -d.value })
.xAxis().ticks(4);
此代码正常工作,但如果值等于零,我们希望隐藏过滤器。
谢谢
答案 0 :(得分:5)
你可以创建一个"假组"在调用.all()
时删除包含零的bin:
function remove_empty_bins(source_group) {
return {
all:function () {
return source_group.all().filter(function(d) {
return d.value != 0;
});
}
};
}
像这样使用它:
var filtered_group = remove_empty_bins(kurumGroup);
kurumRowMapChart.dimension(kurum)
.group(filtered_group)
...
https://github.com/dc-js/dc.js/wiki/FAQ#remove-empty-bins
我们的想法是创建一个位于crossfilter和dc.js之间的对象,它看起来像一个crossfilter组,并根据需要对其进行过滤。
这是一个有点复杂的例子,旨在测试不同数量的柱之间的转换:
http://dc-js.github.io/dc.js/transitions/ordinal-row-transitions.html
(目前转换效果不是很好,但它很好地证明了remove_empty_bins
。)
答案 1 :(得分:0)
@Gordon:好的答案! remove_empty_bins()对我有用! :)
我不得不使用 d.value.count 而不是d.value,但是我认为这取决于您使用的组缩减功能:
return d.value.count !== 0;