遮蔽由曲线晃动的区域

Roo*_*ook 6 matlab

例如,在曲线y = x ^ 2下方的情节()中的区域轻微遮蔽(或孵化;或任何使其与其余部分不同)的最简单方法是什么?

x = 0:pi/10:2*pi;  
y = x.^2.;
plot(x,y);
Run Code Online (Sandbox Code Playgroud)

Dor*_*oom 11

area(x,y)应该做的伎俩.我不确定该类是否具有FaceAlpha属性.

编辑:不幸的是,区域类没有FaceAlpha属性.但是你可以解决这个问题并直接编辑补丁:

x=0:pi/10:2*pi;
y=x.^2;
H=area(x,y);
h=get(H,'children');
set(h,'FaceAlpha',0.5); %#Tada!
Run Code Online (Sandbox Code Playgroud)

编辑2:要遮盖曲线上方的区域,您可以使用带有白色填充的第二个区域图.它是一种kludge,但它应该工作.从头开始:

x=0:pi/10:2*pi;
y=x.^2;
y2=max(y)*ones(size(y));
hold on
H1=area(x,y2);
H2=area(x,y);
set(H2,'FaceColor',[1 1 1]);
axis tight
Run Code Online (Sandbox Code Playgroud)

或者建立在Jason S的解决方案上,使用baseval输入在曲线上方遮挡:

x=0:pi/10:2*pi;
y=x.^2;
baseval=max(y);
H=area(x,y,baseval);
h=get(H,'children');
set(h,'FaceAlpha',0.5,'FaceColor',[0 1 0]);
axis tight
Run Code Online (Sandbox Code Playgroud)


Jas*_*n S 5

详细阐述Doresoom的帖子的补充例子:

x=0:pi/50:2*pi;
y1=x.^2;
y2=10+5*sin(3*x);
baseval1=20;
baseval2=3;
clf;
hold on;
H1=area(x,y1,baseval1);
H2=area(x,y2,baseval2);
hold off;
h=get(H1,'children');
set(h,'FaceAlpha',0.5,'FaceColor',[1 0.5 0]);
  % set color to orange, alpha to 0.5
h=get(H2,'children');
set(h,'FaceAlpha',0.5,'FaceColor',[0.85 1 0.25]);
  % set color to yellow-green, alpha to 0.5
Run Code Online (Sandbox Code Playgroud)

但是你在哪里设置颜色?

h是补丁的句柄(填充区域); 如果你键入get(h),你可以看到它的所有属性.关于patch属性MATLAB文档在某种程度上解释了这些.

例如,如何用这个原理遮蔽曲线上方的区域?

area在基值和曲线之间创建一个补丁.看起来不像是在两条曲线之间创建区域的简单方法.