Штриховка области boundered кривой

Что было бы самым легким способом слегка заштриховать (или штриховка; или что-нибудь для установки его отличающийся от остальных) область в графике (), ниже кривой y=x^2, например?

x = 0:pi/10:2*pi;  
y = x.^2.;
plot(x,y);
6
задан Rook 12 May 2010 в 14:58
поделиться

2 ответа

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
11
ответ дан 8 December 2019 в 14:41
поделиться

Дополнительный пример, развивающий сообщение 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 создает участок между базовым значением и кривой. Однако не похоже, что есть простой способ создать область между двумя кривыми.

5
ответ дан 8 December 2019 в 14:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: