How to shade several areas in a plot?
167 views (last 30 days)
Show older comments
Malahat Mehraban
on 13 Dec 2021
Commented: Malahat Mehraban
on 13 Dec 2021
Hello everyone,
I want to shade some points in a figure. These points are for example 35 in a plot with the length of 600 point. How can I plot these shades in a for loop?
I actually expect to get somthing like the picture that I have attached. I have a figure with three subplots and I want to shade 35 points of these plots.
Thank you in advance for your helps.
0 Comments
Accepted Answer
Star Strider
on 13 Dec 2021
Try this —
x = 210:0.5:227;
y = randn(size(x));
bands = [214 216; 221 223]; % X-Coordinates Of Band Limits: [x(1,1) x(1,2); x(2,1) x(2,2)]
figure
plot(x, y)
hold on
xp = [bands fliplr(bands)]; % X-Coordinate Band Definitions
yp = ([[1;1]*min(ylim); [1;1]*max(ylim)]*ones(1,size(bands,1))).'; % Y-Coordinate Band Definitions
for k = 1:size(bands,1) % Plot Bands
patch(xp(k,:), yp(k,:), [1 1 1]*0.25, 'FaceAlpha',0.5, 'EdgeColor',[1 1 1]*0.25)
end
hold off
This is fully adaptive to the size of the plot limits, requiring only that the ‘bands’ matrix be defined.
I doubt if there is a way to do this without the loop.
.
2 Comments
More Answers (2)
Chunru
on 13 Dec 2021
x = 210:.5:218;
y =randn(size(x));
plot(x, y); hold on
yl = ylim;
% Use the patch for the box
patch([212 213 213 212], [yl(1) yl(1) yl(2) yl(2)], [0.3 0.3 0.3], 'FaceAlpha', 0.3 )
See Also
Categories
Find more on Surface and Mesh Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!