matlab绘制带阴影的曲线

%% 使用matlab绘制带阴影区域的曲线;

figure;
n = 50;
x = linspace(40,70,n);
y = .7*x + normrnd(0,5,size(x));
plot(x,y,'bx');

hold on;
[p,s] = polyfit(x,y,1);  %多项式曲线拟合
[yfit,dy] = polyconf(p,x,s,'predopt','curve'); % 多项式的置信区间

fill([x, fliplr(x)], [yfit-dy, fliplr(yfit+dy)],[0.8706 0.9216 0.9804]);

% fill([x fliplr(x)], [yu fliplr(yl)], [.9805 .7031 .6797], 'linestyle', 'none', 'FaceAlpha',0.5);

% x从左到右,fliplr从右到左。
% yfit-dy,代表的是下边界;yfit+dy代表的是上边界;上边界的顺序也得修改成从右向左;
% [0.8706 0.9216 0.9804] RGB数组;

line(x,yfit,'color','r');
line(x,yfit-dy,'color','r','linestyle',':');
line(x,yfit+dy,'color','r','linestyle',':');

 

理解:↓

matlab绘制带阴影的曲线

本质上,把阴影当作是一个由多段线连接而成的封闭区域,然后就该区域进行填充颜色而已

fill语句中,[x fliplr(x)]表示围成一圈的边框的x坐标,yu 表示阴影的上边界,yl表示下边界。
[.9805 .7031 .6797] 表示阴影填充的RGB
linestyle 表示边界线形
FaceAlpha 表示透明度

本质上2:就是确定了一个四边形,然后在四边形里边,进行填充:

% x从左到右,fliplr从右到左。
% yfit-dy,代表的是下边界;yfit+dy代表的是上边界;上边界的顺序也得修改成从右向左;
% [0.8706 0.9216 0.9804] RGB数组;

方案1:

fill([x fliplr(x)], [yu fliplr(yl)], [.9805 .7031 .6797], 'linestyle', 'none', 'FaceAlpha',0.5); hold on

方案2:

fill([x,fliplr(x)],[yfit-dy,fliplr(yfit+dy)],[0.8706 0.9216 0.9804]);

posted @ 2022-05-23 12:41  bH1pJ  阅读(423)  评论(0编辑  收藏  举报