From e55141d5ab214e769a35f814851878716b4c41ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Thu, 21 Feb 2019 16:05:42 -0500 Subject: [PATCH] use 'anchor' axis (not 'counter') ax to get title offset ... so that we avoid infinite loops on graphs with superimposed subplots --- src/plots/cartesian/axes.js | 61 ++++++++++++------ .../automargin-superimposed-axes.png | Bin 0 -> 32139 bytes .../mocks/automargin-superimposed-axes.json | 45 +++++++++++++ 3 files changed, 85 insertions(+), 21 deletions(-) create mode 100644 test/image/baselines/automargin-superimposed-axes.png create mode 100644 test/image/mocks/automargin-superimposed-axes.json diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index d13d3f6104d..9c266949bc8 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -1946,29 +1946,29 @@ axes.drawOne = function(gd, ax, opts) { push = {x: 0, y: 0, r: 0, l: 0, t: 0, b: 0}; var bbox = ax._boundingBox; - var counterAx = mainPlotinfo[counterLetter + 'axis']; + var titleOffset = getTitleOffset(gd, ax); var anchorAxDomainIndex; var offset; switch(axLetter + s) { case 'xb': anchorAxDomainIndex = 0; - offset = bbox.top - counterAx._length - counterAx._offset; + offset = bbox.top - titleOffset; push[s] = bbox.height; break; case 'xt': anchorAxDomainIndex = 1; - offset = counterAx._offset - bbox.bottom; + offset = titleOffset - bbox.bottom; push[s] = bbox.height; break; case 'yl': anchorAxDomainIndex = 0; - offset = counterAx._offset - bbox.right; + offset = titleOffset - bbox.right; push[s] = bbox.width; break; case 'yr': anchorAxDomainIndex = 1; - offset = bbox.left - counterAx._length - counterAx._offset; + offset = bbox.left - titleOffset; push[s] = bbox.width; break; } @@ -1980,6 +1980,7 @@ axes.drawOne = function(gd, ax, opts) { if(push[s] > 0) { push[s] += offset; } + if(ax.title.text !== fullLayout._dfltTitle[axLetter]) { push[s] += ax.title.font.size; } @@ -2647,11 +2648,37 @@ function drawDividers(gd, ax, opts) { .attr('d', opts.path); } +function getTitleOffset(gd, ax) { + var gs = gd._fullLayout._size; + var axLetter = ax._id.charAt(0); + var side = ax.side; + var anchorAxis; + + if(ax.anchor !== 'free') { + anchorAxis = axisIds.getFromId(gd, ax.anchor); + } else if(axLetter === 'x') { + anchorAxis = { + _offset: gs.t + (1 - (ax.position || 0)) * gs.h, + _length: 0 + }; + } else if(axLetter === 'y') { + anchorAxis = { + _offset: gs.l + (ax.position || 0) * gs.w, + _length: 0 + }; + } + + if(side === 'top' || side === 'left') { + return anchorAxis._offset; + } else if(side === 'bottom' || side === 'right') { + return anchorAxis._offset + anchorAxis._length; + } +} + function drawTitle(gd, ax) { var fullLayout = gd._fullLayout; var axId = ax._id; var axLetter = axId.charAt(0); - var gs = fullLayout._size; var fontSize = ax.title.font.size; var titleStandoff; @@ -2662,36 +2689,28 @@ function drawTitle(gd, ax) { titleStandoff = 10 + fontSize * offsetBase + (ax.linewidth ? ax.linewidth - 1 : 0); } - var transform, counterAxis, x, y; + var titleOffset = getTitleOffset(gd, ax); - if(axLetter === 'x') { - counterAxis = (ax.anchor === 'free') ? - {_offset: gs.t + (1 - (ax.position || 0)) * gs.h, _length: 0} : - axisIds.getFromId(gd, ax.anchor); + var transform, x, y; + if(axLetter === 'x') { x = ax._offset + ax._length / 2; if(ax.side === 'top') { y = -titleStandoff - fontSize * (ax.showticklabels ? 1 : 0); } else { - y = counterAxis._length + titleStandoff + - fontSize * (ax.showticklabels ? 1.5 : 0.5); + y = titleStandoff + fontSize * (ax.showticklabels ? 1.5 : 0.5); } - y += counterAxis._offset; + y += titleOffset; } else { - counterAxis = (ax.anchor === 'free') ? - {_offset: gs.l + (ax.position || 0) * gs.w, _length: 0} : - axisIds.getFromId(gd, ax.anchor); - y = ax._offset + ax._length / 2; if(ax.side === 'right') { - x = counterAxis._length + titleStandoff + - fontSize * (ax.showticklabels ? 1 : 0.5); + x = titleStandoff + fontSize * (ax.showticklabels ? 1 : 0.5); } else { x = -titleStandoff - fontSize * (ax.showticklabels ? 0.5 : 0); } - x += counterAxis._offset; + x += titleOffset; transform = {rotate: '-90', offset: 0}; } diff --git a/test/image/baselines/automargin-superimposed-axes.png b/test/image/baselines/automargin-superimposed-axes.png new file mode 100644 index 0000000000000000000000000000000000000000..06fc2d2ee23708526b802f3c168ad98d3b90ba4f GIT binary patch literal 32139 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