Заполнение области под кривой цветовой картой, определенной функцией кривой - PullRequest
0 голосов
/ 24 марта 2019

Рассмотрим следующий сюжет:

enter image description here

Слева вы можете увидеть заполнение круга относительно профиля функции, используя команду patch

t = linspace(-pi,pi,100);
c = exp(-cos(t));
figure(1)
patch(cos(t),sin(t),c)
axis equal

Справа вы видите профиль функции вдоль оси пунктирной линии слева, который заполняется с помощью команды area.

figure(2)
area(cos(t),c,0);

Я пытаюсь заполнить область под кривой (правая панель) цветами, определенными цветовой картой представления на левой панели. Результаты должны выглядеть так enter image description here

1 Ответ

1 голос
/ 24 марта 2019

Самое близкое, что я могу придумать, это:

function q55322965
% Evaluate the equation (half domain!)
t = linspace(-pi,0,50);
c = exp(-cos(t));

% Turn vectors into a mesh:
[TT,CC] = meshgrid(cos(t),c);

% Clear all points that are above the curve:
CC(CC > c) = NaN;

% Fill in the rectangle between the chart and zero:
CC(end+1,:) = 0;
TT(end+1,:) = TT(end,:);

% Plot:
figure(); mesh(TT,CC,CC,'FaceColor','interp','EdgeColor','interp'); view([0,90]);

Что дает:

enter image description here

Если вы хотите получить менее зазубренный вид при построении этого метода, вы можете увеличить разрешение в t. Например, если мы используем 500 вместо 50 в linspace, мы получим:

enter image description here

...