From 79ec5b7b6c5376c4c166742c0f2df4cafbe2e296 Mon Sep 17 00:00:00 2001 From: archmoj Date: Fri, 9 Apr 2021 17:30:58 -0400 Subject: [PATCH] take into account inside labels of overlaid axes in padding --- src/plots/cartesian/autorange.js | 83 ++++++++++-------- .../baselines/ticklabelposition-overlay.png | Bin 0 -> 21824 bytes .../mocks/ticklabelposition-overlay.json | 61 +++++++++++++ test/jasmine/tests/mock_test.js | 2 + 4 files changed, 109 insertions(+), 37 deletions(-) create mode 100644 test/image/baselines/ticklabelposition-overlay.png create mode 100644 test/image/mocks/ticklabelposition-overlay.json diff --git a/src/plots/cartesian/autorange.js b/src/plots/cartesian/autorange.js index 5d27c3bfea6..0c31f3df717 100644 --- a/src/plots/cartesian/autorange.js +++ b/src/plots/cartesian/autorange.js @@ -217,7 +217,7 @@ function makePadFn(fullLayout, ax, max) { var zero = 0; if(!isLinked(fullLayout, ax._id)) { - zero = padInsideLabelsOnAnchorAxis(ax, max); + zero = padInsideLabelsOnAnchorAxis(fullLayout, ax, max); } extrappad = Math.max(zero, extrappad); @@ -236,45 +236,54 @@ function makePadFn(fullLayout, ax, max) { var TEXTPAD = 3; -function padInsideLabelsOnAnchorAxis(ax, max) { +function padInsideLabelsOnAnchorAxis(fullLayout, ax, max) { var pad = 0; - var anchorAxis = ax._anchorAxis || {}; - if((anchorAxis.ticklabelposition || '').indexOf('inside') !== -1) { - // increase padding to make more room for inside tick labels of the counter axis - if(( - !max && ( - anchorAxis.side === 'left' || - anchorAxis.side === 'bottom' - ) - ) || ( - max && ( - anchorAxis.side === 'top' || - anchorAxis.side === 'right' - ) - )) { - var isX = ax._id.charAt(0) === 'x'; - - if(anchorAxis._vals) { - var rad = Lib.deg2rad(anchorAxis._tickAngles[anchorAxis._id + 'tick'] || 0); - var cosA = Math.abs(Math.cos(rad)); - var sinA = Math.abs(Math.sin(rad)); - - // use bounding boxes - anchorAxis._vals.forEach(function(t) { - if(t.bb) { - var w = 2 * TEXTPAD + t.bb.width; - var h = 2 * TEXTPAD + t.bb.height; - - pad = Math.max(pad, isX ? - Math.max(w * cosA, h * sinA) : - Math.max(h * cosA, w * sinA) - ); + + var isX = ax._id.charAt(0) === 'x'; + + for(var subplot in fullLayout._plots) { + var plotinfo = fullLayout._plots[subplot]; + + if(ax._id !== plotinfo.xaxis._id && ax._id !== plotinfo.yaxis._id) continue; + + var anchorAxis = (isX ? plotinfo.yaxis : plotinfo.xaxis) || {}; + + if((anchorAxis.ticklabelposition || '').indexOf('inside') !== -1) { + // increase padding to make more room for inside tick labels of the counter axis + if(( + !max && ( + anchorAxis.side === 'left' || + anchorAxis.side === 'bottom' + ) + ) || ( + max && ( + anchorAxis.side === 'top' || + anchorAxis.side === 'right' + ) + )) { + if(anchorAxis._vals) { + var rad = Lib.deg2rad(anchorAxis._tickAngles[anchorAxis._id + 'tick'] || 0); + var cosA = Math.abs(Math.cos(rad)); + var sinA = Math.abs(Math.sin(rad)); + + // use bounding boxes + for(var i = 0; i < anchorAxis._vals.length; i++) { + var t = anchorAxis._vals[i]; + if(t.bb) { + var w = 2 * TEXTPAD + t.bb.width; + var h = 2 * TEXTPAD + t.bb.height; + + pad = Math.max(pad, isX ? + Math.max(w * cosA, h * sinA) : + Math.max(h * cosA, w * sinA) + ); + } } - }); - } + } - if(anchorAxis.ticks === 'inside' && anchorAxis.ticklabelposition === 'inside') { - pad += anchorAxis.ticklen || 0; + if(anchorAxis.ticks === 'inside' && anchorAxis.ticklabelposition === 'inside') { + pad += anchorAxis.ticklen || 0; + } } } } diff --git a/test/image/baselines/ticklabelposition-overlay.png b/test/image/baselines/ticklabelposition-overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..fa67194533afa5468bf2e584855147437ffc9371 GIT binary patch literal 21824 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 cubIHMjj*0<2ZUPeUy3mGDyZvX%Q literal 0 HcmV?d00001 diff --git a/test/image/mocks/ticklabelposition-overlay.json b/test/image/mocks/ticklabelposition-overlay.json new file mode 100644 index 00000000000..fa3c722b0d5 --- /dev/null +++ b/test/image/mocks/ticklabelposition-overlay.json @@ -0,0 +1,61 @@ +{ + "data": [ + { + "y": [0, 100], + "yaxis": "y" + }, + { + "y": [100, 0], + "yaxis": "y2" + }, + { + "x": [0, 100], + "xaxis": "x2", + "yaxis": "y3" + }, + { + "x": [100, 0], + "xaxis": "x3", + "yaxis": "y3" + } + ], + "layout": { + "width": 300, + "height": 400, + "margin": { + "t": 40, + "b": 40, + "l": 40, + "r": 40 + }, + "plot_bgcolor": "lightblue", + "showlegend": false, + "yaxis": { + "domain" : [0, 0.45], + "anchor": "x", + "ticklabelposition": "inside", + "side": "left" + }, + "yaxis2": { + "overlaying": "y", + "anchor": "x", + "ticklabelposition": "inside", + "side": "right" + }, + "yaxis3": { + "anchor": "x3", + "domain" : [0.55, 1] + }, + "xaxis2": { + "overlaying": "x3", + "anchor": "y3", + "ticklabelposition": "inside", + "side": "bottom" + }, + "xaxis3": { + "anchor": "y3", + "ticklabelposition": "inside", + "side": "top" + } + } +} diff --git a/test/jasmine/tests/mock_test.js b/test/jasmine/tests/mock_test.js index 3898625f1b0..1851acf84eb 100644 --- a/test/jasmine/tests/mock_test.js +++ b/test/jasmine/tests/mock_test.js @@ -973,6 +973,7 @@ var list = [ 'ticklabelposition-b', 'ticklabelposition-c', 'ticklabelposition-d', + 'ticklabelposition-overlay', 'tickson_boundaries', 'titles-avoid-labels', 'trace_metatext', @@ -2062,6 +2063,7 @@ figs['ticklabelposition-a'] = require('@mocks/ticklabelposition-a'); figs['ticklabelposition-b'] = require('@mocks/ticklabelposition-b'); figs['ticklabelposition-c'] = require('@mocks/ticklabelposition-c'); figs['ticklabelposition-d'] = require('@mocks/ticklabelposition-d'); +figs['ticklabelposition-overlay'] = require('@mocks/ticklabelposition-overlay'); figs['tickson_boundaries'] = require('@mocks/tickson_boundaries'); // figs['titles-avoid-labels'] = require('@mocks/titles-avoid-labels'); // figs['trace_metatext'] = require('@mocks/trace_metatext');