Error using tiledlayout syntax instead of subplot when referencing axes handles

18 views (last 30 days)
Hello, I am trying to use the newer tiledlayout feature rather than subplots as I want to adjust the padding round each subplot. However, I have functions that require an axes handle (ax1, ax2).
Normally I do this: (and it works fine):
ax1=subplot(4,8,[1,2,3,9,10,11],'Parent',f1);
myImshow1(app,IM,n, ax1); %my own imshow function
ax2=subplot(4,8,[4,5,6,7,8,13,14,15,16],'Parent',f1);
myImshow1(app,IM2,n, ax2);
I've tried using tilelayout syntax:
t=tiledlayout(f1,2,2,'TileSpacing','Compact');
ax1=gca;
myImshow1(app,IM,n, ax1)
nexttile(t); ax2=gca;
myImshow1(app,IM2,n, ax2);
But it complains

Accepted Answer

Steven Lord
Steven Lord on 21 Jan 2021
Be very careful about using gca, gcf, etc. in your code. I generally only use those when I'm experimenting in the Command Window.
Instead, call nexttile with an output argument. From its documentation page "ax = nexttile(___) returns the axes object." You can use the "Set Properties on the Axes" example on that documentation page as a model for your code, as it does something very similar to what you're trying to do.
  4 Comments

Sign in to comment.

More Answers (1)

dpb
dpb on 21 Jan 2021
tiledplot is only able to put one axes object per tile, sorry. Another user wanted two y-axes just yesterday...
  1 Comment
Jason
Jason on 22 Jan 2021
So how do you get the appropriate 'Parent' axis handle to be able to pass to e.g. Imshow (in appdesigner)
t=tiledlayout(f1,2,2,'TileSpacing','Compact');
imshow(myImage1,'Parent',????)
nexttile(t);
imshow(myImage2,'Parent',????)

Sign in to comment.

Categories

Find more on Graphics Object Programming in Help Center and File Exchange

Products


Release

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!