source: node_modules/victory-vendor/lib-vendor/d3-scale/src/log.js

Last change on this file was a762898, checked in by istevanoska <ilinastevanoska@…>, 5 months ago

Added visualizations

  • Property mode set to 100644
File size: 3.7 KB
Line 
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = log;
7exports.loggish = loggish;
8var _index = require("../../../lib-vendor/d3-array/src/index.js");
9var _index2 = require("../../../lib-vendor/d3-format/src/index.js");
10var _nice = _interopRequireDefault(require("./nice.js"));
11var _continuous = require("./continuous.js");
12var _init = require("./init.js");
13function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14function transformLog(x) {
15 return Math.log(x);
16}
17function transformExp(x) {
18 return Math.exp(x);
19}
20function transformLogn(x) {
21 return -Math.log(-x);
22}
23function transformExpn(x) {
24 return -Math.exp(-x);
25}
26function pow10(x) {
27 return isFinite(x) ? +("1e" + x) : x < 0 ? 0 : x;
28}
29function powp(base) {
30 return base === 10 ? pow10 : base === Math.E ? Math.exp : x => Math.pow(base, x);
31}
32function logp(base) {
33 return base === Math.E ? Math.log : base === 10 && Math.log10 || base === 2 && Math.log2 || (base = Math.log(base), x => Math.log(x) / base);
34}
35function reflect(f) {
36 return (x, k) => -f(-x, k);
37}
38function loggish(transform) {
39 const scale = transform(transformLog, transformExp);
40 const domain = scale.domain;
41 let base = 10;
42 let logs;
43 let pows;
44 function rescale() {
45 logs = logp(base), pows = powp(base);
46 if (domain()[0] < 0) {
47 logs = reflect(logs), pows = reflect(pows);
48 transform(transformLogn, transformExpn);
49 } else {
50 transform(transformLog, transformExp);
51 }
52 return scale;
53 }
54 scale.base = function (_) {
55 return arguments.length ? (base = +_, rescale()) : base;
56 };
57 scale.domain = function (_) {
58 return arguments.length ? (domain(_), rescale()) : domain();
59 };
60 scale.ticks = count => {
61 const d = domain();
62 let u = d[0];
63 let v = d[d.length - 1];
64 const r = v < u;
65 if (r) [u, v] = [v, u];
66 let i = logs(u);
67 let j = logs(v);
68 let k;
69 let t;
70 const n = count == null ? 10 : +count;
71 let z = [];
72 if (!(base % 1) && j - i < n) {
73 i = Math.floor(i), j = Math.ceil(j);
74 if (u > 0) for (; i <= j; ++i) {
75 for (k = 1; k < base; ++k) {
76 t = i < 0 ? k / pows(-i) : k * pows(i);
77 if (t < u) continue;
78 if (t > v) break;
79 z.push(t);
80 }
81 } else for (; i <= j; ++i) {
82 for (k = base - 1; k >= 1; --k) {
83 t = i > 0 ? k / pows(-i) : k * pows(i);
84 if (t < u) continue;
85 if (t > v) break;
86 z.push(t);
87 }
88 }
89 if (z.length * 2 < n) z = (0, _index.ticks)(u, v, n);
90 } else {
91 z = (0, _index.ticks)(i, j, Math.min(j - i, n)).map(pows);
92 }
93 return r ? z.reverse() : z;
94 };
95 scale.tickFormat = (count, specifier) => {
96 if (count == null) count = 10;
97 if (specifier == null) specifier = base === 10 ? "s" : ",";
98 if (typeof specifier !== "function") {
99 if (!(base % 1) && (specifier = (0, _index2.formatSpecifier)(specifier)).precision == null) specifier.trim = true;
100 specifier = (0, _index2.format)(specifier);
101 }
102 if (count === Infinity) return specifier;
103 const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?
104 return d => {
105 let i = d / pows(Math.round(logs(d)));
106 if (i * base < base - 0.5) i *= base;
107 return i <= k ? specifier(d) : "";
108 };
109 };
110 scale.nice = () => {
111 return domain((0, _nice.default)(domain(), {
112 floor: x => pows(Math.floor(logs(x))),
113 ceil: x => pows(Math.ceil(logs(x)))
114 }));
115 };
116 return scale;
117}
118function log() {
119 const scale = loggish((0, _continuous.transformer)()).domain([1, 10]);
120 scale.copy = () => (0, _continuous.copy)(scale, log()).base(scale.base());
121 _init.initRange.apply(scale, arguments);
122 return scale;
123}
Note: See TracBrowser for help on using the repository browser.