遮蔽由曲线晃动的区域

时间:2010-05-12 14:58:57

标签: matlab

例如,在曲线y = x ^ 2下方的一个区域()中,一个区域(或孵化;或任何设置与其余部分不同)的最简单方法是什么?

x = 0:pi/10:2*pi;  
y = x.^2.;
plot(x,y);

3 个答案:

答案 0 :(得分: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!

EDIT2:要遮盖曲线上方的区域,您可以使用带有白色填充的第二个区域图。它是一种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

或建立在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

答案 1 :(得分: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
  

但是你在哪里设置颜色?

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

  

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

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

答案 2 :(得分:0)

在不弄乱children的情况下,您还可以:

x = 0:pi/10:2*pi;  % from your example
y = x.^2.;    % from your example

H=area(x,y);
set(H(1),'FaceColor','k');
alpha(.5);

为我工作,它也帮助解决了我遇到的一些legend问题。

。提出一个死的问题