1 | function prettyNumber(n) {
|
2 | return n < 1e-15 ? n : parseFloat(n.toFixed(15));
|
3 | }
|
4 | export default function pretty(min, max, n) {
|
5 | if (n === void 0) { n = 5; }
|
6 | if (min === max) {
|
7 | return {
|
8 | max: max,
|
9 | min: min,
|
10 | ticks: [min],
|
11 | };
|
12 | }
|
13 | |
14 |
|
15 |
|
16 |
|
17 |
|
18 | var h = 1.5;
|
19 | var h5 = 0.5 + 1.5 * h;
|
20 |
|
21 | var d = max - min;
|
22 | var c = d / n;
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 | var base = Math.pow(10, Math.floor(Math.log10(c)));
|
30 | var unit = base;
|
31 | if (2 * base - c < h * (c - unit)) {
|
32 | unit = 2 * base;
|
33 | if (5 * base - c < h5 * (c - unit)) {
|
34 | unit = 5 * base;
|
35 | if (10 * base - c < h * (c - unit)) {
|
36 | unit = 10 * base;
|
37 | }
|
38 | }
|
39 | }
|
40 | var nu = Math.ceil(max / unit);
|
41 | var ns = Math.floor(min / unit);
|
42 | var hi = Math.max(nu * unit, max);
|
43 | var lo = Math.min(ns * unit, min);
|
44 | var size = Math.floor((hi - lo) / unit) + 1;
|
45 | var ticks = new Array(size);
|
46 | for (var i = 0; i < size; i++) {
|
47 | ticks[i] = prettyNumber(lo + i * unit);
|
48 | }
|
49 | return {
|
50 | min: lo,
|
51 | max: hi,
|
52 | ticks: ticks,
|
53 | };
|
54 | }
|
55 |
|
\ | No newline at end of file |