MCPcopy Create free account
hub / github.com/idank/explainshell / d3_scale_log

Function d3_scale_log

explainshell/web/static/js/d3.v3.js:6486–6539  ·  view source on GitHub ↗
(linear, base, log, pow)

Source from the content-addressed store, hash-verified

6484 return d3_scale_log(d3.scale.linear().domain([ 0, Math.LN10 ]), 10, d3_scale_logp, d3_scale_powp);
6485 };
6486 function d3_scale_log(linear, base, log, pow) {
6487 function scale(x) {
6488 return linear(log(x));
6489 }
6490 scale.invert = function(x) {
6491 return pow(linear.invert(x));
6492 };
6493 scale.domain = function(x) {
6494 if (!arguments.length) return linear.domain().map(pow);
6495 if (x[0] < 0) log = d3_scale_logn, pow = d3_scale_pown; else log = d3_scale_logp,
6496 pow = d3_scale_powp;
6497 linear.domain(x.map(log));
6498 return scale;
6499 };
6500 scale.base = function(_) {
6501 if (!arguments.length) return base;
6502 base = +_;
6503 return scale;
6504 };
6505 scale.nice = function() {
6506 linear.domain(d3_scale_nice(linear.domain(), d3_scale_logNice(base)));
6507 return scale;
6508 };
6509 scale.ticks = function() {
6510 var extent = d3_scaleExtent(linear.domain()), ticks = [];
6511 if (extent.every(isFinite)) {
6512 var b = Math.log(base), i = Math.floor(extent[0] / b), j = Math.ceil(extent[1] / b), u = pow(extent[0]), v = pow(extent[1]), n = base % 1 ? 2 : base;
6513 if (log === d3_scale_logn) {
6514 ticks.push(-Math.pow(base, -i));
6515 for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(-Math.pow(base, -i) * k);
6516 } else {
6517 for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(Math.pow(base, i) * k);
6518 ticks.push(Math.pow(base, i));
6519 }
6520 for (i = 0; ticks[i] < u; i++) {}
6521 for (j = ticks.length; ticks[j - 1] > v; j--) {}
6522 ticks = ticks.slice(i, j);
6523 }
6524 return ticks;
6525 };
6526 scale.tickFormat = function(n, format) {
6527 if (arguments.length < 2) format = d3_scale_logFormat;
6528 if (!arguments.length) return format;
6529 var b = Math.log(base), k = Math.max(.1, n / scale.ticks().length), f = log === d3_scale_logn ? (e = -1e-12,
6530 Math.floor) : (e = 1e-12, Math.ceil), e;
6531 return function(d) {
6532 return d / pow(b * f(log(d) / b + e)) <= k ? format(d) : "";
6533 };
6534 };
6535 scale.copy = function() {
6536 return d3_scale_log(linear.copy(), base, log, pow);
6537 };
6538 return d3_scale_linearRebind(scale, linear);
6539 }
6540 var d3_scale_logFormat = d3.format(".0e");
6541 function d3_scale_logp(x) {
6542 return Math.log(x < 0 ? 0 : x);

Callers 1

d3.v3.jsFile · 0.85

Calls 6

d3_scale_niceFunction · 0.85
d3_scale_logNiceFunction · 0.85
d3_scaleExtentFunction · 0.85
formatFunction · 0.85
d3_scale_linearRebindFunction · 0.85
fFunction · 0.70

Tested by

no test coverage detected