Adding multiple patch items to a plot

5 vues (au cours des 30 derniers jours)
barbH
barbH le 16 Mar 2020
Modifié(e) : Adam Danz le 16 Mar 2020
Given an array for x axis 'start' indicies and a second array for x axis 'stop' indicies, how can I create shaded patches for the area between each start and stop index?
I tried to combine the two arrays into one matrix and combine with matching min,max y values but it doesnt seem to work well...
Example:
x_start = [43 123 238 374];
x_stop = [57 135 251 394];
% min and max values of the signal
ymin = -20;
ymax = 20;
I would like to create something like this python example I found:
  2 commentaires
Ameer Hamza
Ameer Hamza le 16 Mar 2020
Can you give a small example of both indices and what is your required output?
barbH
barbH le 16 Mar 2020
Hi, I edited my question. I hope it makes things clearer..

Connectez-vous pour commenter.

Réponse acceptée

Adam Danz
Adam Danz le 16 Mar 2020
Here's a demo using the rectangel function.
% Create x and y values.
y = rand(1,100);
x = linspace(0,10,100); % or x = 1:numel(y)
plot(x,y)
ylim([-1 2])
% Specify start, stop index values (positive integers)
startStopIdx = [ % [start, stop]
10 25;
40 50;
80 92];
% Convert the index values to rectangle coordinates
yl = ylim();
ylim(yl)
startStopX = x(startStopIdx);
width = startStopX(:,2)-startStopX(:,1);
hold on
arrayfun(@(i)rectangle('Position', [startStopX(i,1),yl(1),width(i),range(yl)], ...
'EdgeColor', 'none', 'FaceColor', [0 1 0 .2]), 1:size(startStopX,1))
  2 commentaires
barbH
barbH le 16 Mar 2020
Perfect! Thanks!
Adam Danz
Adam Danz le 16 Mar 2020
Modifié(e) : Adam Danz le 16 Mar 2020
Glad I could help.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by