highlighting a sections in a plot using patch

조회 수: 5 (최근 30일)
ran
ran 2023년 9월 12일
이동: Dyuman Joshi 2023년 9월 12일
i have the following code and i get the result as shown in the image. I eant to shade all the way dwon to the line what i do wrong?
% Fit the lowess curve
ywf =fitresultLow(sort(xw));
% Determine where the function goes up and where it goes down
up_indices = find(diff(ywf) > 0);
down_indices = find(diff(ywf) < 0);
% Calculate regions where ywf is above a threshold (0.5 in this example)
threshold = 0.5;
up_regions = [];
down_regions = [];
if ~isempty(up_indices)
up_regions = [up_indices(1)]; % Initialize with the first up index
for i = 2:length(up_indices)
if up_indices(i) > up_indices(i-1) + 1
up_regions = [up_regions, up_indices(i)];
end
end
end
if ~isempty(down_indices)
down_regions = [down_indices(1)]; % Initialize with the first down index
for i = 2:length(down_indices)
if down_indices(i) > down_indices(i-1) + 1
down_regions = [down_regions, down_indices(i)];
end
end
end
% Sort regions and create shading
regions = sort([up_regions, down_regions]);
xw1 = sort(xw);
lower_y_coordinate = min(Nu);
figure;
plot(xw1, Nu);
hold on;
for k = 1:2:length(regions) - 1
xrng = regions(k):regions(k + 1);
patch([xw1(xrng), flip(xw1(xrng))], [Nu(xrng)' ones(size(Nu(xrng)')) * lower_y_coordinate], 'r', 'FaceAlpha', 0.5);
end
% Create a polygon to extend shading all the way down
fill([xw1(1), xw1(end), xw1(end), xw1(1)], [lower_y_coordinate, lower_y_coordinate, lower_y_coordinate, lower_y_coordinate], 'r', 'FaceAlpha', 0.5);
hold off;
grid on;

채택된 답변

ran
ran 2023년 9월 12일
이동: Dyuman Joshi 2023년 9월 12일
i fix it, all u need to do it creating vactors in the patch area
patch([xw1(xrng);flip(xw1(xrng))], [Nu(xrng);ones(size(Nu(xrng)')) * lower_y_coordinate]
the fill function can be removed

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Polygons에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by