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]);