plotting 12 graphs in one figure
    2 views (last 30 days)
  
       Show older comments
    
load data_matrix.mat
data=SECTION_L;
data(:,1:3)=[];
row=9;
cleanup=data([1 2 3 row],:);
% year range
y1 = 1975;
y2 = 2016;
% init
x = y1:y2;
nx = numel(x);
mo_av = zeros(nx,12);
mo_max = zeros(nx,12);
mo_min = zeros(nx,12);
max_day = zeros(nx,12);
min_day = zeros(nx,12);
k = 0;
for k = 1:nx  % year loop
    col_dat_yr=find(cleanup(1,:)== x(k)); % find data corresponding to year = x(k)
    data_yr=cleanup(:,col_dat_yr);
    for mmonth = 1:12
        col_dat_mo=find(data_yr(2,:)==mmonth);
        data_mo=data_yr(:,col_dat_mo);
        mo_av(k,mmonth)=mean(data_mo(4,:));
        mo_max(k,mmonth)=max(data_mo(4,:));
        mo_min(k,mmonth)=min(data_mo(4,:));
        max_day(k,mmonth)=find(data_mo(4,:)==mo_max(k,mmonth));
        min_day(k,mmonth)=find(data_mo(4,:)==mo_min(k,mmonth));
    end
end
% plot montly data 
str_mo = {'Jan'   'Feb'   'Mar'   'Apr'   'May'   'Jun'   'Jul'   'Aug'   'Sep'   'Oct'   'Nov'   'Dec'};
for ck = 1:12
    figure(ck)
    plot(x,mo_av(:,ck),'-*',x,mo_max(:,ck),'-*',x,mo_min(:,ck),'-*');
    xlabel('Years')
    title([' Monthly Data : '  str_mo(ck)]);
    legend('Avg','Max','Min');
end
This script plots 12 graphs with the mean, max,min, temperature of every month. this needs to be in a subplot and all the months needs to be on one figure. Also the mean,max,min need to be in their own figure. So it has to be three figures with 12 graphs in each figure, one for mean, one for min, and one for max. (I added the files to get the cleanup variable)
0 Comments
Accepted Answer
  Voss
      
      
 on 1 Dec 2022
        load data_matrix.mat
data=SECTION_L;
data(:,1:3)=[];
row=9;
cleanup=data([1 2 3 row],:);
% year range
y1 = 1975;
y2 = 2016;
% init
x = y1:y2;
nx = numel(x);
mo_av = zeros(nx,12);
mo_max = zeros(nx,12);
mo_min = zeros(nx,12);
max_day = zeros(nx,12);
min_day = zeros(nx,12);
k = 0;
for k = 1:nx  % year loop
    col_dat_yr=find(cleanup(1,:)== x(k)); % find data corresponding to year = x(k)
    data_yr=cleanup(:,col_dat_yr);
    for mmonth = 1:12
        col_dat_mo=find(data_yr(2,:)==mmonth);
        data_mo=data_yr(:,col_dat_mo);
        mo_av(k,mmonth)=mean(data_mo(4,:));
        mo_max(k,mmonth)=max(data_mo(4,:));
        mo_min(k,mmonth)=min(data_mo(4,:));
        max_day(k,mmonth)=find(data_mo(4,:)==mo_max(k,mmonth));
        min_day(k,mmonth)=find(data_mo(4,:)==mo_min(k,mmonth));
    end
end
% plot montly data 
str_mo = {'Jan'   'Feb'   'Mar'   'Apr'   'May'   'Jun'   'Jul'   'Aug'   'Sep'   'Oct'   'Nov'   'Dec'};
figure
sgtitle('Monthly Data : Avg')
for ck = 1:12
    subplot(3,4,ck)
    plot(x,mo_av(:,ck),'-*');
    xlabel('Years')
    title(str_mo(ck));
end
figure
sgtitle('Monthly Data : Max')
for ck = 1:12
    subplot(3,4,ck)
    plot(x,mo_max(:,ck),'-*');
    xlabel('Years')
    title(str_mo(ck));
end
figure
sgtitle('Monthly Data : Min')
for ck = 1:12
    subplot(3,4,ck)
    plot(x,mo_min(:,ck),'-*');
    xlabel('Years')
    title(str_mo(ck));
end
0 Comments
More Answers (1)
  MarKf
      
 on 1 Dec 2022
        So instead of plottin 12 figures each with mo_av, mo_max and mo_min you want 3 with 12 subplots? Would subplot(1,12,x) do? that is a long 12 subplots figure (then I suggest to increase the figure dimentions with another parameter-value pair when calling figure, like figure(...'Pos',[...])) otherwise you can do something like subplot(3,4,x).
% plot montly data 
str_me = {'Avg','Max','Min'};
str_mo = {'Jan'   'Feb'   'Mar'   'Apr'   'May'   'Jun'   'Jul'   'Aug'   'Sep'   'Oct'   'Nov'   'Dec'};
for ck = 1:3
    figure('Name',str_me{ck})
    switch ck, case 1, mo = mo_av; case 2, mo = mo_max; case 3, mo = mo_min; end
    for smi = 1:12
        subplot(1,12,smi)
        plot(x,mo(:,smi),'-*');
        if smi == 6, xlabel('Years'), end
        title(str_mo(smi));
    end
end
0 Comments
See Also
Categories
				Find more on 2-D and 3-D Plots 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!
















