diff --git a/src/plots/cartesian/autorange.js b/src/plots/cartesian/autorange.js index 7e9d0227bca..50a58a401d3 100644 --- a/src/plots/cartesian/autorange.js +++ b/src/plots/cartesian/autorange.js @@ -120,8 +120,8 @@ function getAutoRange(gd, ax) { } else if(dv / axLen > mbest) { // in case of padding longer than the axis // at least include the unpadded data values. - minbest = {val: minpt.val, pad: 0}; - maxbest = {val: maxpt.val, pad: 0}; + minbest = {val: minpt.val, nopad: 1}; + maxbest = {val: maxpt.val, nopad: 1}; mbest = dv / axLen; } } @@ -158,17 +158,17 @@ function getAutoRange(gd, ax) { } else { if(toZero) { if(minbest.val >= 0) { - minbest = {val: 0, pad: 0}; + minbest = {val: 0, nopad: 1}; } if(maxbest.val <= 0) { - maxbest = {val: 0, pad: 0}; + maxbest = {val: 0, nopad: 1}; } } else if(nonNegative) { if(minbest.val - mbest * getPadMin(minbest) < 0) { - minbest = {val: 0, pad: 0}; + minbest = {val: 0, nopad: 1}; } if(maxbest.val <= 0) { - maxbest = {val: 1, pad: 0}; + maxbest = {val: 1, nopad: 1}; } } @@ -240,7 +240,10 @@ function makePadFn(fullLayout, ax, max) { (ax.domain[1] - ax.domain[0]); } - return function getPad(pt) { return pt.pad + (pt.extrapad ? extrappad : zero); }; + return function getPad(pt) { + if(pt.nopad) return 0; + return pt.pad + (pt.extrapad ? extrappad : zero); + }; } var TEXTPAD = 3; diff --git a/test/image/baselines/ticklabelposition-5.png b/test/image/baselines/ticklabelposition-5.png new file mode 100644 index 00000000000..87dcd501840 Binary files /dev/null and b/test/image/baselines/ticklabelposition-5.png differ diff --git a/test/image/baselines/ticklabelposition-6.png b/test/image/baselines/ticklabelposition-6.png new file mode 100644 index 00000000000..ae129c253c8 Binary files /dev/null and b/test/image/baselines/ticklabelposition-6.png differ diff --git a/test/image/mocks/ticklabelposition-5.json b/test/image/mocks/ticklabelposition-5.json new file mode 100644 index 00000000000..6342f69f89b --- /dev/null +++ b/test/image/mocks/ticklabelposition-5.json @@ -0,0 +1,187 @@ +{ + "data": [{ + "xaxis": "x", + "yaxis": "y", + "type": "bar", + "orientation": "h", + "x": [ + 67.5, + 23.3, + 5.2, + 1.8, + 0.8, + 0.7, + 0.23, + 0.1, + 0.1 + ], + "y": [ + "Hydro", + "Solid biomass", + "Wind", + "Ethanol", + "Renewable municipal waste", + "Solar thermal", + "Biodiesel", + "Solar photovoltaic", + "Tidal" + ] + }, { + "xaxis": "x2", + "yaxis": "y2", + "type": "bar", + "orientation": "h", + "x": [ + 67.5, + 23.3, + 5.2, + 1.8, + 0.8, + 0.7, + 0.23, + 0.1, + 0.1 + ], + "y": [ + "Hydro", + "Solid biomass", + "Wind", + "Ethanol", + "Renewable municipal waste", + "Solar thermal", + "Biodiesel", + "Solar photovoltaic", + "Tidal" + ] + }, { + "xaxis": "x3", + "yaxis": "y3", + "type": "bar", + "orientation": "v", + "y": [ + 67.5, + 23.3, + 5.2, + 1.8, + 0.8, + 0.7, + 0.23, + 0.1, + 0.1 + ], + "x": [ + "Hydro", + "Solid biomass", + "Wind", + "Ethanol", + "Renewable municipal waste", + "Solar thermal", + "Biodiesel", + "Solar photovoltaic", + "Tidal" + ] + }, { + "xaxis": "x4", + "yaxis": "y4", + "type": "bar", + "orientation": "v", + "y": [ + 67.5, + 23.3, + 5.2, + 1.8, + 0.8, + 0.7, + 0.23, + 0.1, + 0.1 + ], + "x": [ + "Hydro", + "Solid biomass", + "Wind", + "Ethanol", + "Renewable municipal waste", + "Solar thermal", + "Biodiesel", + "Solar photovoltaic", + "Tidal" + ] + }], + "layout": { + "xaxis": { + "rangemode": "nonnegative", + "anchor": "y", + "domain": [0, 0.475], + "side": "bottom", + "ticklabelposition": "outside", + "gridcolor": "white" + }, + "yaxis": { + "anchor": "x", + "domain": [0, 0.475], + "side": "left", + "ticklabelposition": "inside", + "gridcolor": "white" + }, + "xaxis2": { + "rangemode": "nonnegative", + "anchor": "y2", + "domain": [0.525, 1], + "side": "bottom", + "ticklabelposition": "inside", + "gridcolor": "white" + }, + "yaxis2": { + "anchor": "x2", + "domain": [0, 0.475], + "side": "right", + "ticklabelposition": "inside", + "gridcolor": "white" + }, + "xaxis3": { + "anchor": "y3", + "domain": [0.525, 1], + "side": "top", + "ticklabelposition": "inside", + "gridcolor": "white" + }, + "yaxis3": { + "rangemode": "nonnegative", + "anchor": "x3", + "domain": [0.525, 1], + "side": "right", + "ticklabelposition": "inside", + "gridcolor": "white" + }, + "xaxis4": { + "anchor": "y4", + "domain": [0, 0.475], + "side": "top", + "ticklabelposition": "inside", + "gridcolor": "white" + }, + "yaxis4": { + "autorange": "reversed", + "rangemode": "nonnegative", + "anchor": "x4", + "domain": [0.525, 1], + "side": "left", + "ticklabelposition": "outside", + "gridcolor": "white" + }, + "font": { + "size": 16 + }, + "plot_bgcolor": "lightblue", + "showlegend": false, + "width": 800, + "height": 800, + "margin": { + "t": 40, + "b": 40, + "l": 40, + "r": 40 + } + } +} diff --git a/test/image/mocks/ticklabelposition-6.json b/test/image/mocks/ticklabelposition-6.json new file mode 100644 index 00000000000..0d3a7464ac8 --- /dev/null +++ b/test/image/mocks/ticklabelposition-6.json @@ -0,0 +1,90 @@ +{ + "data": [{ + "xaxis": "x", + "yaxis": "y", + "orientation": "h", + "x": [0.4, 0.5, 0.6, 0.7, 0.8], + "y": ["Oo", "Pp", "Qq", "Rr", "Ss"] + }, { + "xaxis": "x2", + "yaxis": "y2", + "orientation": "h", + "x": [0.4, 0.5, 0.6, 0.7, 0.8], + "y": ["Oo", "Pp", "Qq", "Rr", "Ss"] + }, { + "xaxis": "x3", + "yaxis": "y3", + "orientation": "v", + "y": [0.4, 0.5, 0.6, 0.7, 0.8], + "x": ["Oo", "Pp", "Qq", "Rr", "Ss"] + }, { + "xaxis": "x4", + "yaxis": "y4", + "orientation": "v", + "y": [0.4, 0.5, 0.6, 0.7, 0.8], + "x": ["Oo", "Pp", "Qq", "Rr", "Ss"] + }], + "layout": { + "xaxis": { + "rangemode": "nonnegative", + "anchor": "y", + "domain": [0, 0.475], + "gridcolor": "white" + }, + "yaxis": { + "anchor": "x", + "domain": [0, 0.475], + "ticklabelposition": "inside", + "gridcolor": "white" + }, + "xaxis2": { + "rangemode": "tozero", + "anchor": "y2", + "domain": [0.525, 1], + "gridcolor": "white" + }, + "yaxis2": { + "anchor": "x2", + "domain": [0, 0.475], + "ticklabelposition": "inside", + "gridcolor": "white" + }, + "xaxis3": { + "anchor": "y3", + "domain": [0.525, 1], + "ticklabelposition": "inside", + "gridcolor": "white" + }, + "yaxis3": { + "rangemode": "nonnegative", + "anchor": "x3", + "domain": [0.525, 1], + "gridcolor": "white" + }, + "xaxis4": { + "anchor": "y4", + "domain": [0, 0.475], + "ticklabelposition": "inside", + "gridcolor": "white" + }, + "yaxis4": { + "rangemode": "tozero", + "anchor": "x4", + "domain": [0.525, 1], + "gridcolor": "white" + }, + "font": { + "size": 20 + }, + "plot_bgcolor": "lightblue", + "showlegend": false, + "width": 800, + "height": 800, + "margin": { + "t": 40, + "b": 40, + "l": 40, + "r": 40 + } + } +}