Shading an area boundered by a curve

后端 未结 3 2145
小鲜肉
小鲜肉 2020-12-09 22:42

What would be the easiest way to lightly shade (or hatch; or anything to set it different from the rest) an area in a plot(), below a curve y=x^2, for example ?



        
3条回答
  •  旧巷少年郎
    2020-12-09 23:25

    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
    

提交回复
热议问题