当删除最大值时,我想触发某些图形中异常值的弹性大小调整。这是我到目前为止所做的:
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似乎不适用于此。
有关修复此实施或以其他方式实现此目的的任何建议吗?
答案 0 :(得分:2)
对于任何好奇的人来说,这是如何实现这一点的。当最大电流条太小(或很大)有价值时,这会导致轴的条件缩放。
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;
}
});