in src/axisHelper.ts [434:482]
export function getRecommendedTickValuesForAQuantitativeRange(
maxTicks: number,
scale: LinearScale<any, any>,
minInterval?: number): number[] {
let tickLabels: number[] = [];
// if maxticks is zero return none
if (maxTicks === 0) {
return tickLabels;
}
let quantitiveScale: LinearScale<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: number = 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;
}