Shading an area boundered by a curve

area(x,y) should do the trick. I’m not sure if that class has a FaceAlpha property though.

EDIT: Unfortunately, the area class doesn’t have a FaceAlpha property. But you can work around that and edit the patch directly:

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

EDIT2: To shade the area above the curve, you could use a second area plot with a white fill. It’s kind of a kludge, but it should work. Starting over:

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

or building on Jason S’s solution, use the baseval input to shade above the curve:

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

Leave a Comment