How can I shade confidence intervals and assign colors to frequency spectra plot (pwelch)

조회 수: 4 (최근 30일)
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')

답변 (1개)

Jeremy
Jeremy 2019년 12월 9일
편집: Jeremy 2019년 12월 9일
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.

카테고리

Help CenterFile Exchange에서 Annotations에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by