How to manage multiple subplots ?

9 views (last 30 days)
My script run
for 1=1:185
for every iteration, it generate two subplots. However, when I try to plot them in combination it shows either first subplot or secodn only:
The detail is as follow:
clear all
clc
ev_hr=readmatrix('U.csv');
ev_hr=ev_hr';
ev_bg=load('BG.txt');
bbb=ev_bg; % rate calculation
position = 0; % position of plot in subplot
fig_num = 1; % figure() number
for S=1:10
uu=S;
r=bbb(uu); % for first event
data=ev_hr(:,uu);
u=transpose(data);
for n=1:length(u);
dt=n;
for i=1:length(u)-(n-1);
K=u(i:i+n-1);
k=sum(K);
b(i,n)=(k-(r)*(dt))/sqrt(r*dt);
end
end
T=transpose(b);
for ii=1:72
for jj=1:72-(ii-1)
if(ii==1)
b1(ii,jj)=T(ii,jj);
else
b1(ii,jj+(ii-1))=T(ii,jj);
end
end
end
for ii=1:length(b)
for jj=1:72
if(b1(ii,jj)==0)
b1(ii,jj)=nan;
end
end
end
c = NaN(72,24);
c2=[c b1];
x = [-23:72]' ;
y = [1:72]' ;
position = position + 1;
if position > 10; position = 1; fig_num = fig_num + 1,end
figure(fig_num)
%--------------Part A (subplot 1) ...............%
subplot(5,2,position);
pcolor(x,y,c2);
shading interp ;
colorbar
%---------------- Part B (subplot 2)------------%
subplot(5,2,position);
A=readmatrix('hourly_ev.csv');
A=A';
uuu=A(:,uu);
ss=sum(uuu);
ss=ss+20;
bb=cumsum(uuu);
h=[-23:72];
plot(h,bb, 'b')
axis([-23 72 0 ss])
saveas(gcf,'ev_01.png')
end
Case 1: If I run this script or (comment the part A), the output only show the subplot 2
Case 2: if I comment the part B the output only shows the subplot 1
What I need?
I need the combined output: First column should be subplot 1 and second should be subplot 2 and so on.

Accepted Answer

Awais Saeed
Awais Saeed on 9 Dec 2021
I hope this will work for you.
clear all
position = 0; % position of plot in subplot
fig_num = 1; % figure() number
for k = 20:30
x = rand(1,1).*linspace(0,2*pi,k);
y = sin(x).*cos(x);
xcod = ceil(10.*rand(3,3));
ycod = xcod';
Cmat = ceil(10.*rand(3,3));
position = position + 1;
% if position >= 11, create a new figure window and reset position value
if position >= 11; position = 1; fig_num = fig_num + 1,end
figure(fig_num)
% caption for title for each figure
caption = sprintf('Fig # %d, starting k = %d', fig_num, k);
subplot(5,2,position)
plot(x,y)
position = position + 1;
subplot(5,2,position);
pcolor(xcod,ycod,Cmat);
% main title (starting from R2018b)
sgtitle(caption);
end
fig_num = 2
fig_num = 3
  1 Comment
Adnan Barkat
Adnan Barkat on 9 Dec 2021
Thank you very much. I got the required results.

Sign in to comment.

More Answers (1)

Walter Roberson
Walter Roberson on 9 Dec 2021
subplot(5,2,position);
You do that same subplot() twice, but you do not change position between the two calls.
Start your position at 1, and increment it by 2 each time, and the first subplot goes at 5,2,position and the second one to the right of it goes at 5,2,position+1
  1 Comment
Adnan Barkat
Adnan Barkat on 9 Dec 2021
Even, if i change the position the situation remain same.

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!