当移除最大值后,我想触发某些图中离群值的弹性调整大小。这是我到目前为止的内容:

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;
    }
  });

09-19 14:25