当移除最大值后,我想触发某些图中离群值的弹性调整大小。这是我到目前为止的内容:
dmsn = ndx.dimension(...)
groupTotal = dmsn.group().reduceSum(...)
row
.width(100)
.height(100)
.dimension(dmsn)
.group(groupTotal)
document.addEventListener('mouseup',function(){
setTimeout(function(e){
newTop = groupTotal.top(1)[0].value;
ratio = newTop / origTop;
if(ratio < .1){
row.elasticX(true);
dc.redrawAll('groupTotal');
} else {
row.elasticX(false);
dc.redrawAll('groupTotal');
}
},1);
}, true);
该功能检查新的最大值是否足够小以至于可以进行重新调整。
超时可确保在应用过滤器后正确计算比率。但是,这也意味着已经应用了新的弹性。不幸的是,redrawAll在这里似乎不起作用。
关于修复此实现或以其他方式实现的任何建议?
最佳答案
对于任何好奇的人,这是实现此目标的方法。当最大电流条太小(或太大)而无法使用时,这会导致条件轴缩放。
var currentMax = 0,
ratio,
chartMax = groupData.top(1)[0].value; // initialize with largest value
row
.on('postRedraw', function(chart){
currentMax = groupData.top(1)[0].value; // after redraw, capture largest val
ratio = currentMax/chartMax;
if(ratio < .1 || ratio > 1){ // check if bars are too small or too large
row.elasticX(true);
chartMax = currentMax; // always be sure to reset the chartMax
dc.redrawAll();
} else {
row.elasticX(false);
chartMax = currentMax;
}
});