in src/axis/axis.ts [216:251]
export function getRecommendedTickValuesForAQuantitativeRange(maxTicks: number, scale: ScaleLinear<any, any>, minInterval?: number): number[] {
let tickLabels: number[] = [];
// if maxticks is zero return none
if (maxTicks === 0)
return tickLabels;
let quantitiveScale = <ScaleLinear<any, any>>scale;
if (quantitiveScale.ticks) {
tickLabels = quantitiveScale.ticks(maxTicks);
if (tickLabels.length > maxTicks && maxTicks > 1)
tickLabels = quantitiveScale.ticks(maxTicks - 1);
if (tickLabels.length < MinTickCount) {
tickLabels = quantitiveScale.ticks(maxTicks + 1);
}
tickLabels = createTrueZeroTickLabel(tickLabels);
if (minInterval && tickLabels.length > 1) {
let tickInterval = tickLabels[1] - tickLabels[0];
while (tickInterval > 0 && tickInterval < minInterval) {
for (let i = 1; i < tickLabels.length; i++) {
tickLabels.splice(i, 1);
}
tickInterval = tickInterval * 2;
}
// keep at least two labels - the loop above may trim all but one if we have odd # of tick labels and dynamic range < minInterval
if (tickLabels.length === 1) {
tickLabels.push(tickLabels[0] + minInterval);
}
}
return tickLabels;
}
return tickLabels;
}