How can I shade confidence intervals and assign colors to frequency spectra plot (pwelch)
    6 views (last 30 days)
  
       Show older comments
    
I am trying to plot power spectra for timeseries data with 95% confidence intervals. Right now I have plotted 2-3 depths of data in each spectra plot and I can plot the upper and lower confidence bounds as dashed lines. I am unsure how to the control the color of my spectra lines as well as the confidence intervals. And ideally I would like to shade the confidence interval instead of using lines. I have just made a mess so far (see attachment) . Any tips would be much appreciated. This is my first time working with this kind of plot/data. Thank you so much!
Here is my code for the plot attached: 
note: I would like to ideally keep plotting the spectra in loops in case I want to add other depths (up to 9 different instruments)
_______________________________________
%% Combo PK spectra at NFFT = 8192
close all
f7=figure(7); 
sgtitle('PK Frequency Spectra, July 23 - October 4 (NFFT=8192)')
P = .95; %confidence interval 
clear nfft; nfft = 8192; 
%pH 
subplot(2,2,1)
clear jdo; jdo=[2,8];
for j=jdo
    clear PxxU F PxxC; [PxxU,F,PxxC] = pwelch(detrend(fixgaps(PK.PH(j,spgood))),[],[],nfft,288);
    h=loglog(F,PxxU,F,PxxC,'--');
    hold on
end
grid on
set(gca,'fontsize',20)
xlabel('f (cpd)','fontsize',20)
ylabel('S_{pHpH} (days)','fontsize',20)
title('pH'); 
set(gca,'fontsize',16)
xlim([.1 10])
%legend('6.1 mab','1 mab','location','southwest')
%Oxygen 
subplot(2,2,2)
clear jdo; jdo=[3 8];
for j=jdo
    clear PxxU F PxxC; [PxxU,F,PxxC] = pwelch(detrend(fixgaps(PK.DO(j,spgood))),[],[],nfft,288);
    h=loglog(F,PxxU,F,PxxC,'--');
    hold on
end
grid on
set(gca,'fontsize',20)
xlabel('f (cpd)','fontsize',20)
ylabel('S_{DODO} (days)','fontsize',20)
title('Dissolved Oxygen'); 
set(gca,'fontsize',16)
xlim([.1 10])
%legend('PK 5.2 mab','PK 1 mab','location','southwest')
%Temperature
subplot(2,2,3)
clear jdo; jdo=[2 8 1];
for j=jdo
    clear PxxU F PxxC; [PxxU,F,PxxC] = pwelch(detrend(fixgaps(PK.TEMP(j,spgood))),[],[],nfft,288);
    h=loglog(F,PxxU,F,PxxC,'--');
    hold on
end
grid on
set(gca,'fontsize',20)
xlabel('f (cpd)','fontsize',20)
ylabel('S_{TT} (days)','fontsize',20)
title(['Temperature']); 
set(gca,'fontsize',16)
xlim([.1 10])
%legend('Surface','6.1 mab','1 mab','location','southwest')
%Salinity 
subplot(2,2,4)
clear jdo; jdo=[2 8];
for j=jdo
    clear PxxU F PxxC; [PxxU,F,PxxC] = pwelch(detrend(fixgaps(PK.SAL(j,spgood))),[],[],nfft,288);
    h=loglog(F,PxxU,F,PxxC,'--');
    hold on
end
grid on
set(gca,'fontsize',20)
xlabel('f (cpd)','fontsize',20)
ylabel('S_{SS} (days)','fontsize',20)
title('Salinity'); 
set(gca,'fontsize',16)
xlim([.1 10])
%legend('6.1 mab','1 mab','location','southwest')
0 Comments
Answers (1)
  Jeremy
    
 on 9 Dec 2019
        
      Edited: Jeremy
    
 on 9 Dec 2019
  
      The plot commands accept a 3 element vector in place of the built-in colors, each element being a number between 0 and 1 representing the components of red, green and blue, respectively. So, for example
plot(x,y,'Color',[1 0 0])
plots x vs. y with a red line. You can make an N-by-3 matrix of line colors to use in your loops if you want to avoid re-using colors.
0 Comments
See Also
Categories
				Find more on Linear and Nonlinear Regression 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!
