How to generate and save multiple plots?

14 views (last 30 days)
Hi everyone,
MY script generate 185 plots and each plot further consists of 2 subplots. I need to plot both subplots in parallel way, however my cide only show one subplot at a time. May someonbe suuget me how i can modify my script.
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:185
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)
subplot(93,2,position); pcolor(x,y,c2);
shading interp ;
colorbar
ylabel('Time interval (hours)')
xlabel('Time of the day')
A=readmatrix('hourly_ev.csv');
A=A';
uuu=A(:,uu);
ss=sum(uuu);
ss=ss+20
bb=cumsum(uuu);
h=[-23:72];
subplot(93,2,position); plot(h,bb, 'b')
axis([-23 72 0 ss])
end

Accepted Answer

Awais Saeed
Awais Saeed on 9 Dec 2021
Edited: Awais Saeed on 9 Dec 2021
If you want to plot all of your plots on same plot window then use 'hold on'. If you want to plot each plot individually then you can acheive that as folllowing.
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);
position = position + 1;
% if position >= 5, create a new figure window and reset position value
if position >= 5; position = 1; fig_num = fig_num + 1,end
figure(fig_num)
subplot(2,2,position)
plot(x,y)
% add caption for each plot
caption = sprintf('fig # %d, subplot # %d, k = %d', fig_num,position, k); % Caption for each subplot's position
title(caption, 'FontSize', 10);
xlabel('x')
ylabel('sin(x)')
end
fig_num = 2
fig_num = 3
  3 Comments
Andi
Andi on 9 Dec 2021
PLease see the main question, still there is a problem.
Awais Saeed
Awais Saeed on 9 Dec 2021
Are you asking for two plots per subplot? If that's the case than simply update and if condition and subplot() as shown below:
if position >= 3; position = 1; fig_num = fig_num + 1,end
figure(fig_num)
subplot(2,1,position)

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!