Adding titles squashes one of my images in a TiledChartLayout (R2020a)

6 views (last 30 days)
Matt J
Matt J on 30 Apr 2021
Commented: Matt J on 4 May 2021
I have a TiledChartLayout of 6 images that initially looks like this:
Then, however, I add titles to the upper 5 images and it squashes the lower image to a flat line, resulting in this:
I tried resizing the figure, to no avail. Why might this be happening and how do I prevent it?
  6 Comments
Matt J
Matt J on 30 Apr 2021
Seems to work fine in R2021a:
h=openfig('testFig');
str='ABCDE';
ax=flip(findobj('Type','axes'));
for i=1:5, title(ax(i),str(i)); ax(i).FontSize=15; end
h.Position(4)=1.1*h.Position(4);
figure(h)

Sign in to comment.

Accepted Answer

Benjamin Kraus
Benjamin Kraus on 30 Apr 2021
Edited: Benjamin Kraus on 30 Apr 2021
I opened the figure you created, and I see you have set the GridSize to [2756 3840].
TiledChartLayout is attempting to keep each of those axes the same height, so when you add a title to any axes in the second row it is going to make space for a title on all 2755 rows in between the axes.
A better approach is to leverage the south tile of the TiledChartLayout.
Generically:
t = tiledlayout('flow');
for i = 1:5
ax(i) = nexttile(t);
imagesc(ax(i),rand(100));
axis(ax(i),'off','square');
title(ax(i), char('@'+i));
ax(i).FontSize = 15;
end
ax(6) = axes(t);
imagesc(ax(6),linspace(0,1,256).*[1;1]);
colormap(t.Parent, gray);
ax(6).Layout.Tile = 'south';
pbaspect(ax(6),[20 1 1])
axis(ax(6),'off')
Or better yet, use the regular colorbar:
t = tiledlayout('flow');
for i = 1:5
ax(i) = nexttile(t);
imagesc(ax(i),rand(100));
axis(ax(i),'off','square');
title(ax(i), char('@'+i));
ax(i).FontSize = 15;
end
colormap(t.Parent, gray);
c = colorbar;
c.Layout.Tile = 'south';
  3 Comments
Matt J
Matt J on 4 May 2021
Then, is there any workaround that will let me constrain plot box aspect ratios in 2020a?

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by