Multiple axes in a subplot
128 views (last 30 days)
dpb on 18 Oct 2021
Edited: dpb on 19 Oct 2021
It's a pain -- MathWorks doesn't think you're supposed to ever want to do that; there are no builtin tools to do it. There may be some tools at the FEX that help, but I've not looked recently.
It's doable, but unfortunately, none of the newer stuff that has been introduced helps -- one has to stick with the venerable subplot because there is only one underlying x axes with yyaxis and nextplot and tiled axes will only allow one axis.
Following is a basic outline of the sequence you have to follow -- it is convoluted and highly error-prone, but can be made to work if you have enough perserverence and patience. (This isn't the only way; see my follow-up note on this particular way...)
hAx=subplot(2,1,1); % create the first subplot axes
hAx.Position=hAx.Position.*[1 1 1 0.8]; % shorten height for 2nd x axis room
hAx=plotyy(hAx,1:10,rand(1,10),1:10,randn(1,10)); % and the second; keep array of handles
% Now add a second
The above could be turned into a more generalized routine but I've never taken the time to do so...but it gives the outline of the needed machinations to get to the second axes created by plotyy
NB: the need to keep a 2D array of axes handles by subplot and by axes within each subplot. It's really easy to mung up one of those and lose access.