How to plot multiple plots in a for loop without overwriting them?
    11 views (last 30 days)
  
       Show older comments
    
    Tony Castillo
      
 on 9 Jul 2021
  
    
    
    
    
    Commented: Tony Castillo
      
 on 9 Jul 2021
            Hello all,
I have been striving to plot the irradiance vector and its corresponding impact over the SOC of the battery, but it seems to be writing the same over and over till the end of the loop, for this case I only set up a 2 for loop. 
It is as if it will not load the following corresponding value and make up the second plot with the same older value. The problem arise on figure 1 and 2, do you have any workaround for this matter?

This is the code.
%To simulate the 12 months at one click
close all;
clear;
tic %%%%Mido el tiempo de ejecución
load PED_HDW_GEO_5.mat
%%%%%%%%Storage of variables for each iteration%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
month_=zeros(12,1);
Irr_=zeros(12,1);
SOC_=zeros(12,1);
%%%Here I execute the code twice
for month_number=1:2
    if (month_number>=1) && (month_number<=2)
        Season=1.30; %%C
      else
        Season=1.20;
    end
    %%%SIMULINK model
    sim('Full_D_.slx');
    disp(month_number)
    bdclose('Full_PED_FL.slx');
    %%%%Data upload
    load month.mat
    load Irr.mat
    load SOC.mat
    %%%%%%time base
    Irr.time=Irr.time/3600;
    T=Irr.time;
      %%%
    figure(1)
    plot(T, SOC.data);
    hold on
    grid on
    xlim([8 32])
    ylabel('SOC (%)', 'FontSize',14)
    xlabel('Hours (day)', 'FontSize',14)
    title('SOC along the year variation', 'FontSize',14)
    % % %     saveas(gcf,'_SOC_alongYear.png')
    figure(2)
    plot(T, Irr.data)
    hold on
    grid on
    xlim([8 32])
    xlabel('Hours', 'FontSize',14)
    ylabel('Irradiance (W·m²)', 'FontSize',14)
    title('Irradiance along year', 'FontSize',14)
    SOC= (min(SOC))*100;
    I=max(Irr);    
    % % % % All of the accumulated variables in the for loop
        month_(month_number)=month_number;
    Irr_(month_number)=I;
    SOC_(month_number)=SOC;
end
figure (1)
legend('Jan','Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')
figure (2)
legend('Jan','Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')
0 Comments
Accepted Answer
  Cris LaPierre
    
      
 on 9 Jul 2021
        
      Edited: Cris LaPierre
    
      
 on 9 Jul 2021
  
      Your plotting code looks fine, and your plot has two lines on it, as shown by the legend. If it did not, you would get a warning about ignoring extra legend items.
I would look into your data. Perhaps your January data is not what you think it should be. I would also rearrange your plotting code so that only the code that needs to be run multiple times is included inside the for loop.
for loop = 1:2
    T = 8:32;
    SOC.data = rand(1,25);
    Irr.data = rand(1,25);
    figure(1)
    plot(T, SOC.data);
    hold on
    figure(2)
    plot(T, Irr.data)
    hold on
end
figure (1)
hold off
legend('Jan','Feb')
grid on
xlim([8 32])
ylabel('SOC (%)', 'FontSize',14)
xlabel('Hours (day)', 'FontSize',14)
title('SOC along the year variation', 'FontSize',14)
figure (2)
hold off
legend('Jan','Feb')
grid on
xlim([8 32])
xlabel('Hours', 'FontSize',14)
ylabel('Irradiance (W·m²)', 'FontSize',14)
title('Irradiance along year', 'FontSize',14)
More Answers (0)
See Also
Categories
				Find more on Deep Learning Toolbox in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

