Reducing the distance among subplot figures?

415 views (last 30 days)
FW
FW on 13 Aug 2021
Commented: DGM on 14 Aug 2021
I am using a subplot option to plot parts of a figure. Is there is a possibility to reduce the distance between the two figures, without affecting their dimensions (as shown by the arrows). For example, we can create more columns in subplot, but I am avoiding that. Thanks.

Answers (4)

Sulaymon Eshkabilov
Sulaymon Eshkabilov on 13 Aug 2021
Set up axis position of subplots, e,g:
x=0:1:360; y=-180:1:180; G = cos(x)+sin(y(:));
HA(1) = subplot(221);
surf(G)
HA(2) = subplot(222);
mesh(G)
set(HA(1))
POS = get(HA(1), 'Position' )
POS(1) = 0.02 ; % Position move
POS(3) = 0.5 ; % Position move
set(HA(1), 'Position', POS) ;
  4 Comments
DGM
DGM on 14 Aug 2021
I'm not really sure how close you wanted them or whether this could be done with a single axes. Should the plot boxes stay slightly separated? Did you want to maintain the box size or maintain the outer positions?
x = rand(100,1);
% bring these two together by stretching the boxes
HA(1) = subplot(2,2,1);
plot(x)
HA(2) = subplot(2,2,2);
plot(x)
gapscale = 0; % zero gap
P = vertcat(HA.Position);
gap = P(2,1)-(P(1,1)+P(1,3));
P(:,3) = P(1,3)+gap*(1-gapscale)/2;
P(2,1) = P(2,1)-gap*(1-gapscale)/2;
HA(1).Position = P(1,:);
HA(2).Position = P(2,:);
HA(2).YTick = [];
% bring these two together by moving the boxes
HA(1) = subplot(2,2,3);
plot(x)
HA(2) = subplot(2,2,4);
plot(x)
gapscale = 0; % zero gap
P = vertcat(HA.Position);
gap = P(2,1)-(P(1,1)+P(1,3));
P(1,1) = P(1,1)+gap*(1-gapscale)/2;
P(2,1) = P(2,1)-gap*(1-gapscale)/2;
HA(1).Position = P(1,:);
HA(2).Position = P(2,:);
HA(2).YTick = [];
Either way, you're going to have to deal with the fact that the ticklabels collide

Sign in to comment.


the cyclist
the cyclist on 13 Aug 2021
Not a direct answer to this question, but the newer tiledlayout method has greater flexibility in this regard. (For example, there is a TileSpacing property that can be set to "compact", which is what you want.)
  2 Comments
the cyclist
the cyclist on 14 Aug 2021
It was introduced in R2019b, so guessing you have R2019a.

Sign in to comment.


DGM
DGM on 14 Aug 2021
This is a bit of a workaround, but I've been using it for a long time. It works in older versions and it doesn't require a bunch of tedious wrangling of plot properties.

Matt J
Matt J on 14 Aug 2021
Here is yet another FEX offering that allows flexible control over subplot spacing:

Products


Release

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by