如何在plot()中轻松地为曲线y=x^2下方的区域添加浅色阴影(或者斜线图案,或者其他任何不同于其他部分的设置)?
x = 0:pi/10:2*pi;
y = x.^2.;
plot(x,y);
如何在plot()中轻松地为曲线y=x^2下方的区域添加浅色阴影(或者斜线图案,或者其他任何不同于其他部分的设置)?
x = 0:pi/10:2*pi;
y = x.^2.;
plot(x,y);
area(x,y)
可以解决问题。但是我不确定该类是否具有FaceAlpha属性。
编辑: 不幸的是,这个类没有FaceAlpha属性。但是你可以通过直接编辑patch来解决问题:
x=0:pi/10:2*pi;
y=x.^2;
H=area(x,y);
h=get(H,'children');
set(h,'FaceAlpha',0.5); %#Tada!
编辑2: 要阴影覆盖曲线上方的区域,您可以使用第二个带有白色填充的区域图。这有点笨拙,但应该可以工作。重新开始:
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
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
在基准值和曲线之间创建一个补丁。不过似乎没有简单的方法来创建两条曲线之间的区域。
不需要操作 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);
对我很有用,它还帮助我解决了一些传奇
问题。
为了让一个已经死掉的问题复活。