How to shade several areas in a plot?
361 visualizaciones (últimos 30 días)
Malahat Mehraban el 13 de Dic. de 2021
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.
Star Strider el 13 de Dic. de 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)]
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)
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.
Más respuestas (2)
Voss el 13 de Dic. de 2021
In addition to the x- and y-coordinates of the rectangles you want to add to the plots, you'll need to specify the 'AlphaData' property for the transparency and the 'EdgeColor' property for the red lines around the edges. A list of patch properties is here.