diff --git a/+labkit/+app/+plot/private/finitePlotLimits.m b/+labkit/+app/+plot/private/finitePlotLimits.m index 70ed0954..81ef9bcf 100644 --- a/+labkit/+app/+plot/private/finitePlotLimits.m +++ b/+labkit/+app/+plot/private/finitePlotLimits.m @@ -11,8 +11,7 @@ end function [xLim, yLim] = equalDataUnitLimits(ax, xLim, yLim) - drawnow - position = getpixelposition(ax, true); + position = resolveAxesPixelPosition(ax); if numel(position) ~= 4 || position(3) <= 0 || position(4) <= 0 return; end @@ -35,6 +34,24 @@ yLim = unscaleLimits(yWork, yLog); end +function position = resolveAxesPixelPosition(ax) + position = [NaN NaN NaN NaN]; + for attempt = 1:3 + drawnow + position = getpixelposition(ax, true); + if numel(position) == 4 && position(3) > 0 && position(4) > 0 + return; + end + if attempt == 3 + break; + end + end + fallback = ax.Position; + if numel(fallback) == 4 && fallback(3) > 0 && fallback(4) > 0 + position = double(fallback); + end +end + function limits = scaleLimits(limits, isLog) if isLog if any(limits <= 0)