序数条形图上的dc.js过滤会导致条宽度错误

时间:2014-12-10 08:50:32

标签: javascript d3.js dc.js

我实现了一个dc.js的脚本,它有一个范围图表和一个条形图。如果过滤范围图表,条形图将受到影响。遗憾的是,当过滤器仅适用于一个元素时,条形宽度的渲染有时会失败。这是一个包含错误的屏幕截图:

如果我选择多个元素,它可以工作:

我在处理序数量表时遇到sth.错误吗?

以下是相关代码:

//fake group, which sorts the elements and
//removes items with value smaller than one
var removeEmptyBinsAndSort = function(source_group) {
 return {
     all: function() {
         var orderFn = function(d) {
             return d;
         };

         blubb = source_group.order(orderFn)
             .top(Infinity).filter(function(d) {
                 return d.value > 1;
             });

         return blubb;
     },
 };
}

barChart
 .colors(d3.scale.category20())
 .dimension(dimensions.name)
 .group(groups.nameNoEmpty)
 .elasticY(true)
 .x(d3.scale.ordinal().range(groups.nameNoEmpty))
 .elasticX(true)
 .xUnits(dc.units.ordinal);

更新

我改变了戈登提到的问题。但我仍然得到同样的错误。这是更新的代码:

var removeEmptyBinsAndSort = function(source_group) {

    var orderFn = function(d) {
        return d;
    };

    source_group.order(orderFn);

    var all = function() {
        return source_group.top(Infinity)
            .filter(function(d) {
                return d.value > 1.0;
            });
    };

    return {
        all: all,

        //returns all key values as sorted array
        domain: function() {
            return all().map(function(d) {
                return d.key;
            });
        }
    };
};

//The call in the bar chart is now
barChart
 .x(d3.scale.ordinal().domain(groups.nameNoEmpty.domain()))

非常奇怪的是它有时会起作用,有时却不起作用。重现起来很难。

0 个答案:

没有答案