How to shade area between standard deviations in a plot?

33 ビュー (過去 30 日間)
Tomaszzz
Tomaszzz 2022 年 3 月 28 日
編集済み: MANDRAKE 2022 年 8 月 18 日
Hi all,
I would like to shade the area between standard deviations.
The data is attached. My code is as follows:
load 'mean'
load 'std';
bottom_sd=(mean-sd);
top_sd=(mean+sd);
figure(1)
plot(mean,(bottom_sd),'r');
hold on;
plot(mean,(top_sd),'r');
patch([mean(:); flipud(mean(:))], [mean(:)-sd(:); flipud(mean(:)+sd(:))], [0.6 0.7 0.8])
hold off
But it gives me this. Cold you please help?

採用された回答

Jan
Jan 2022 年 3 月 28 日
編集済み: Jan 2022 年 8 月 18 日
data1 = load('mean.mat');
m = data1.mean;
data2 = loadt('std.mat');
s = data2.sd; % Do not use "mean" and "std" as variables!
x = (1:numel(m)).';
m = m(:); % [EDITED] Be sure that the data are column vectors
s = s(:); % [EDITED]
figure;
axes('NextPlot', 'add'); % as: hold on
size(x)
size(low)
patch([x; flip(x)], [m + s; flip(m - s)], [0.6 0.7 0.8])
plot(x, m);
Your code mixes x and y coordinates.
  2 件のコメント
MANDRAKE
MANDRAKE 2022 年 8 月 18 日
編集済み: MANDRAKE 2022 年 8 月 18 日
Thanks a lot Jan.
The line with the patch function should be something like
patch([x; flip(x)], [m + s, flip(m - s)], [0.6 0.7 0.8])
to avoid the possible error about having two vectors of different lengths.
Jan
Jan 2022 年 8 月 18 日
@MANDRAKE: Thanks for this comment. I've inserted some code to ensure, that the data are column vectors.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeAnnotations についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by