필터 지우기
필터 지우기

How to manage multiple subplots ?

조회 수: 54 (최근 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 CenterFile Exchange에서 Subplots에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by