in src/lib/d3_scales.ts [157:186]
function ticks(n: number): number[] {
if (n >= domain_idx[1] - domain_idx[0] + 1) {
return values.slice(domain_idx[0], domain_idx[1] + 1)
}
var t = [];
for (var i = 0; i < n; ++i) {
// Find the roundest number in the intervalle
var start_idx = domain_idx[0] + Math.floor(i / n * (domain_idx[1] - domain_idx[0]));
var end_dx = domain_idx[0] + Math.floor((i + 1) / n * (domain_idx[1] - domain_idx[0]));
var start = values[start_idx];
var end = end_dx > domain_idx[1] ? values[domain_idx[1]] : values[end_dx];
var val;
if (start == end) {
val = start;
}
else {
var precision = 1;
var prev = i > 0 ? t[t.length - 1] : start;
while (precision < 20 && toPrecisionFloor(prev, precision) == toPrecisionFloor(end, precision)) {
++precision;
}
val = parseFloat(((prev + end) / 2).toPrecision(precision));
}
if (i > 0 && t[i - 1] == val) {
continue;
}
t.push(val);
}
return t;
};