Plotting Multiple Shaded Uncertainties

8 ビュー (過去 30 日間)
Olivia Hakan
Olivia Hakan 2023 年 12 月 7 日
コメント済み: Star Strider 2023 年 12 月 8 日
Hi, I am relatively new to coding and having an issue plotting my data. I get files with element concentrations and uncertainties and I'd like to plot many of them on one figure with their corresponding figures shaded. I've gotten this code to work for shading the uncertainty for a single element, but I'm not sure this is accurate and the legend is offset (counting the shading as entries). Ideally I won't need a string of code for each element (I have 11 in my code currently but we measure 140). Thanks for any input!
X = Xactdata.Date(Data); % dates & times from instrument
Elements = [Xactdata.SULPHUR(Data),Xactdata.CHLORINE(Data),Xactdata.POTASSIUM(Data),Xactdata.CALCIUM(Data),Xactdata.TITANIUM(Data),Xactdata.IRON(Data),Xactdata.COPPER(Data),Xactdata.ZINC(Data),Xactdata.ARSENIC(Data),Xactdata.BROMINE(Data),Xactdata.BARIUM(Data)]; %element concentration
E_err = [Xactdata.S_U(Data),Xactdata.Cl_U(Data),Xactdata.K_U(Data),Xactdata.Ca_U(Data),Xactdata.Ti_U(Data),Xactdata.Fe_U(Data),Xactdata.Cu_U(Data),Xactdata.Zn_U(Data),Xactdata.As_U(Data),Xactdata.Br_U(Data),Xactdata.Ba_U(Data)]; %element uncertainty
E_Labels = {"S","Cl","K","Ca","Ti","Fe","Cu","Zn","As","Br","Ba"};
figure
for i = 1:11 %number of elements plotted
plot(X, Elements(:,i))
hold on
patch([x; flip(x)], [Elements(:,i)-E_err(:,i); flip(Elements(:,i)+E_err(:,i))], 'b', 'FaceAlpha',0.25, 'EdgeColor','none')
end
legend(E_Labels)
title('Element Concentrations')
ylabel('Concentration (ng/m^3)')
xlabel('Date (UTC)')

採用された回答

Star Strider
Star Strider 2023 年 12 月 8 日
That appears to be correct, although it would be necessary to provide the data to check for any errors.
You can prevent the patch plots from appearing in the legend by providing only the plot calls to the legend fucntion:
X = Xactdata.Date(Data); % dates & times from instrument
Elements = [Xactdata.SULPHUR(Data),Xactdata.CHLORINE(Data),Xactdata.POTASSIUM(Data),Xactdata.CALCIUM(Data),Xactdata.TITANIUM(Data),Xactdata.IRON(Data),Xactdata.COPPER(Data),Xactdata.ZINC(Data),Xactdata.ARSENIC(Data),Xactdata.BROMINE(Data),Xactdata.BARIUM(Data)]; %element concentration
E_err = [Xactdata.S_U(Data),Xactdata.Cl_U(Data),Xactdata.K_U(Data),Xactdata.Ca_U(Data),Xactdata.Ti_U(Data),Xactdata.Fe_U(Data),Xactdata.Cu_U(Data),Xactdata.Zn_U(Data),Xactdata.As_U(Data),Xactdata.Br_U(Data),Xactdata.Ba_U(Data)]; %element uncertainty
E_Labels = {"S","Cl","K","Ca","Ti","Fe","Cu","Zn","As","Br","Ba"};
figure
for i = 1:11 %number of elements plotted
hp{i} = plot(X, Elements(:,i)) ;
hold on
patch([X; flip(X)], [Elements(:,i)-E_err(:,i); flip(Elements(:,i)+E_err(:,i))], 'b', 'FaceAlpha',0.25, 'EdgeColor','none')
end
legend([hp{:}], E_Labels, 'Location','best)
title('Element Concentrations')
ylabel('Concentration (ng/m^3)')
xlabel('Date (UTC)')
That should work. (I changed the first patch argument from ‘[x; flip(x)]’ to ‘[X; flip(X)]’ since MATLAB is case-sensitive, and the independent variable appears to be ‘X’ rather than ‘x’.)
.
  4 件のコメント
Olivia Hakan
Olivia Hakan 2023 年 12 月 8 日
That worked. Thanks again!
Star Strider
Star Strider 2023 年 12 月 8 日
As always, my pleasure!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchange2-D and 3-D Plots についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by