Javascript 顺序条形图上的dc.js筛选呈现错误的条形图宽度

Javascript 顺序条形图上的dc.js筛选呈现错误的条形图宽度,javascript,d3.js,dc.js,Javascript,D3.js,Dc.js,我用dc.js实现了一个脚本,它有一个范围图和一个条形图。如果过滤范围图,条形图将受到影响。不幸的是,当过滤器仅应用于一个元素时,条宽度的渲染有时会失败。以下是该bug的屏幕截图: 如果我选择了多个元素,它将起作用: 我在处理顺序刻度时是否做错了什么 以下是相关代码: //fake group, which sorts the elements and //removes items with value smaller than one var removeEmptyBinsAndSort

我用
dc.js
实现了一个脚本,它有一个范围图和一个条形图。如果过滤范围图,条形图将受到影响。不幸的是,当过滤器仅应用于一个元素时,条宽度的渲染有时会失败。以下是该bug的屏幕截图:

如果我选择了多个元素,它将起作用:

我在处理顺序刻度时是否做错了什么

以下是相关代码:

//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()))

真正奇怪的是,它有时有效,有时无效。很难重现。

x比例参数是错误的,但可能是无害的。您通常不想设置范围,因为这是屏幕坐标(输出),dc.js已经设置好了。域是输入,它将使用数组而不是组。(d3对交叉过滤器一无所知。)也可能不相关,但您只需要对您的组应用一次order函数。(您可以在RemoveEmptyBinasAndSort的构造部分而不是返回部分中执行此操作。)您好,戈登,非常感谢您的回答。我已经更新了代码。不幸的是,没有改变。这当然可能是一个dc.js错误,酒吧宽度在过去一直是一个问题。你会拉小提琴吗?你说“有时”;是否有一系列的操作导致它出现?我只是在范围图中玩了范围滑块。我以后再做小提琴。