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错误,酒吧宽度在过去一直是一个问题。你会拉小提琴吗?你说“有时”;是否有一系列的操作导致它出现?我只是在范围图中玩了范围滑块。我以后再做小提琴。