MCPcopy Index your code
hub / github.com/csev/py4e / d3_scale_log

Function d3_scale_log

code3/gmane/d3.v2.js:2756–2818  ·  view source on GitHub ↗
(linear, log)

Source from the content-addressed store, hash-verified

2754};
2755
2756function d3_scale_log(linear, log) {
2757 var pow = log.pow;
2758
2759 function scale(x) {
2760 return linear(log(x));
2761 }
2762
2763 scale.invert = function(x) {
2764 return pow(linear.invert(x));
2765 };
2766
2767 scale.domain = function(x) {
2768 if (!arguments.length) return linear.domain().map(pow);
2769 log = x[0] < 0 ? d3_scale_logn : d3_scale_logp;
2770 pow = log.pow;
2771 linear.domain(x.map(log));
2772 return scale;
2773 };
2774
2775 scale.nice = function() {
2776 linear.domain(d3_scale_nice(linear.domain(), d3_scale_niceDefault));
2777 return scale;
2778 };
2779
2780 scale.ticks = function() {
2781 var extent = d3_scaleExtent(linear.domain()),
2782 ticks = [];
2783 if (extent.every(isFinite)) {
2784 var i = Math.floor(extent[0]),
2785 j = Math.ceil(extent[1]),
2786 u = pow(extent[0]),
2787 v = pow(extent[1]);
2788 if (log === d3_scale_logn) {
2789 ticks.push(pow(i));
2790 for (; i++ < j;) for (var k = 9; k > 0; k--) ticks.push(pow(i) * k);
2791 } else {
2792 for (; i < j; i++) for (var k = 1; k < 10; k++) ticks.push(pow(i) * k);
2793 ticks.push(pow(i));
2794 }
2795 for (i = 0; ticks[i] < u; i++) {} // strip small values
2796 for (j = ticks.length; ticks[j - 1] > v; j--) {} // strip big values
2797 ticks = ticks.slice(i, j);
2798 }
2799 return ticks;
2800 };
2801
2802 scale.tickFormat = function(n, format) {
2803 if (arguments.length < 2) format = d3_scale_logFormat;
2804 if (arguments.length < 1) return format;
2805 var k = n / scale.ticks().length,
2806 f = log === d3_scale_logn ? (e = -1e-12, Math.floor) : (e = 1e-12, Math.ceil),
2807 e;
2808 return function(d) {
2809 return d / pow(f(log(d) + e)) < k ? format(d) : "";
2810 };
2811 };
2812
2813 scale.copy = function() {

Callers 1

d3.v2.jsFile · 0.70

Calls 8

powFunction · 0.85
logFunction · 0.85
sliceMethod · 0.80
d3_scale_niceFunction · 0.70
d3_scaleExtentFunction · 0.70
formatFunction · 0.70
d3_scale_linearRebindFunction · 0.70
fFunction · 0.50

Tested by

no test coverage detected