Что было бы самым легким способом слегка заштриховать (или штриховка; или что-нибудь для установки его отличающийся от остальных) область в графике (), ниже кривой y=x^2, например?
x = 0:pi/10:2*pi;
y = x.^2.;
plot(x,y);
area(x,y)
должно сработать. Я не уверен, что у этого класса есть свойство FaceAlpha.
EDIT: К сожалению, класс area не имеет свойства 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: Чтобы затенять область над кривой, можно использовать второй участок области с белой заливкой. Это не очень удобно, но должно сработать. Начиная сначала:
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
или основываясь на решении Джейсона С, используйте базовый ввод для затенения над кривой:
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
Дополнительный пример, развивающий сообщение 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 по свойствам патчей
это в некоторой степени объясняется.
И как, например, заштриховать область над кривой, используя этот принцип?
area
создает участок между базовым значением и кривой. Однако не похоже, что есть простой способ создать область между двумя кривыми.