MCPcopy
hub / github.com/plotly/plotly.js / getAutoRange

Function getAutoRange

src/plots/cartesian/autorange.js:52–192  ·  view source on GitHub ↗

* getAutoRange * * Collects all _extremes values corresponding to a given axis * and computes its auto range. * * Note that getAutoRange uses return values from findExtremes. * * @param {object} gd: * graph div object with filled-in fullData and fullLayout, in particular * with filled-i

(gd, ax)

Source from the content-addressed store, hash-verified

50 * would be impossible.
51 */
52function getAutoRange(gd, ax) {
53 var i, j;
54 var newRange = [];
55
56 var fullLayout = gd._fullLayout;
57 var getPadMin = makePadFn(fullLayout, ax, 0);
58 var getPadMax = makePadFn(fullLayout, ax, 1);
59 var extremes = concatExtremes(gd, ax);
60 var minArray = extremes.min;
61 var maxArray = extremes.max;
62
63 if(minArray.length === 0 || maxArray.length === 0) {
64 return Lib.simpleMap(ax.range, ax.r2l);
65 }
66
67 var minmin = minArray[0].val;
68 var maxmax = maxArray[0].val;
69
70 for(i = 1; i < minArray.length; i++) {
71 if(minmin !== maxmax) break;
72 minmin = Math.min(minmin, minArray[i].val);
73 }
74 for(i = 1; i < maxArray.length; i++) {
75 if(minmin !== maxmax) break;
76 maxmax = Math.max(maxmax, maxArray[i].val);
77 }
78
79 var autorange = ax.autorange;
80 var axReverse =
81 autorange === 'reversed' ||
82 autorange === 'min reversed' ||
83 autorange === 'max reversed';
84
85 if(!axReverse && ax.range) {
86 var rng = Lib.simpleMap(ax.range, ax.r2l);
87 axReverse = rng[1] < rng[0];
88 }
89
90 // one-time setting to easily reverse the axis
91 // when plotting from code
92 if(ax.autorange === 'reversed') {
93 ax.autorange = true;
94 }
95
96 var rangeMode = ax.rangemode;
97 var toZero = rangeMode === 'tozero';
98 var nonNegative = rangeMode === 'nonnegative';
99 var axLen = ax._length;
100 // don't allow padding to reduce the data to < 10% of the length
101 var minSpan = axLen / 10;
102
103 var mbest = 0;
104 var minpt, maxpt, minbest, maxbest, dp, dv;
105
106 for(i = 0; i < minArray.length; i++) {
107 minpt = minArray[i];
108 for(j = 0; j < maxArray.length; j++) {
109 maxpt = maxArray[j];

Callers 4

axes_test.jsFile · 0.85
calc_autorange.jsFile · 0.85
doAutoRangeFunction · 0.85
geo.jsFile · 0.85

Calls 4

makePadFnFunction · 0.85
concatExtremesFunction · 0.85
calcBreaksLengthFunction · 0.85
applyAutorangeOptionsFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…