dc.js - 如果值为零,如何隐藏 dc.js 行图值

标签 dc.js

如果过滤后 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);

此代码正常工作,但我们希望在值为零时隐藏过滤器。

谢谢

最佳答案

您可以创建一个“假组”,当 .all() 时删除包含零的垃圾箱叫做:

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。)

关于dc.js - 如果值为零,如何隐藏 dc.js 行图值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27305546/

相关文章:

dc.js - Crossfilter示例中的合成图

javascript - DC.js - 空白数据点和直方图

javascript - DC.js 数据表的自定义文本过滤器

javascript - 为什么我的 reducer 在 dc.js 中应用的第一个过滤器和后续过滤器之间表现不同?

javascript - 在 DC.js 中呈现多折线图

javascript - 在 Crossfilter/DC.js 中加载 CSV 并创建过滤器

javascript - d3.js 按索引在特定点向折线图添加垂直线

dc.js 动态瀑布图

javascript - angular-dc 条形图未呈现

dc.js - 在没有交叉过滤器的情况下使用 dc.js