필터 지우기
필터 지우기

Reducing the distance among subplot figures?

조회 수: 558 (최근 30일)
FW
FW 2021년 8월 13일
이동: Matt J 2024년 3월 5일
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.
  댓글 수: 2
Ron
Ron 2024년 3월 4일
This is very very late for the answer but there is a very simple way to do this.
aa=subplot(122);
aa.Position(1)=0.51; %% position =[x_position y_position widht length] all are in some unit
you can check the position vectoor but simply typing aa in the console and itll display all the properties. from there you can start moving your figure. Please accept this answer because a lot many people are searching for this answer just like me but want a simple solution
MW
MW 2024년 3월 5일
Comments cannot be accepted. If you can write an answer with a small al visudemo of bringing the figures together, then that will be very helpful

댓글을 달려면 로그인하십시오.

채택된 답변

DGM
DGM 2021년 8월 14일
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.
  댓글 수: 1
Matt J
Matt J 2021년 8월 14일
이동: Matt J 2024년 3월 5일
Here is yet another FEX offering that allows flexible control over subplot spacing:

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Sulaymon Eshkabilov
Sulaymon Eshkabilov 2021년 8월 13일
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
FW
FW 2021년 8월 14일
Thanks. It seems there is no simple solution. I basically wanted to introduce break x-axis by bringing two figures very close together without changing their dimensions (this was to be done in Powerpoint afterwards to hide the y-axis of the second one). It seems MATLAB is not a good choice for introducing axes breaks. I wanted to more subplots underneath.
DGM
DGM 2021년 8월 14일
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

댓글을 달려면 로그인하십시오.


the cyclist
the cyclist 2021년 8월 13일
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
FW
FW 2021년 8월 14일
Thanks. I think this is feature of 2021. I have 2019 and I am getting and error.
the cyclist
the cyclist 2021년 8월 14일
It was introduced in R2019b, so guessing you have R2019a.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Subplots에 대해 자세히 알아보기

제품


릴리스

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by