How to manage multiple subplots ?

58 ビュー (過去 30 日間)
Andi
Andi 2021 年 12 月 9 日
コメント済み: Andi 2021 年 12 月 9 日
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.

採用された回答

Awais Saeed
Awais Saeed 2021 年 12 月 9 日
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 件のコメント
Andi
Andi 2021 年 12 月 9 日
Thank you very much. I got the required results.

サインインしてコメントする。

その他の回答 (1 件)

Walter Roberson
Walter Roberson 2021 年 12 月 9 日
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 件のコメント
Andi
Andi 2021 年 12 月 9 日
Even, if i change the position the situation remain same.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeSubplots についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by