Shade areas between graphs

5 visualizaciones (últimos 30 días)
Sreerag K
Sreerag K el 19 de Oct. de 2020
Comentada: Sreerag K el 19 de Oct. de 2020
I need to shade the areas of graph above y = 1 line and below y = -1 line. How can I do code for that.
Like this one.

Respuesta aceptada

Sudheer Bhimireddy
Sudheer Bhimireddy el 19 de Oct. de 2020
Look at area() function in MATLAB. May be that helps with your code.
Below is an example:
x = -3*pi : 0.1 :3*pi;
y_signal = sin(2*x)+sin(1.7*x); % Random signal
threshold = 0.7; % Area lower boundary
figure(1);
clf;
hold on;
area(x, max(y_signal, threshold), threshold,'EdgeColor', 'none', 'FaceColor', 'b');
plot(x, y_signal,'k-',lsz,2);
Here is the result:
  3 comentarios
Sudheer Bhimireddy
Sudheer Bhimireddy el 19 de Oct. de 2020
I was able to replicate the problem with two baselines. For now, may be this workaround might help.
x = -3*pi : 0.1 :3*pi;
y_signal = sin(2*x)+sin(1.7*x); % Random signal
threshold_high = 0.7;
threshold_low = -0.5;
figure(1);
clf;
hold on;
area(x, max(y_signal, threshold_high), threshold_high,'EdgeColor', 'none', 'FaceColor', 'b');
area(x, min(y_signal, threshold_low), threshold_low, 'EdgeColor', 'none', 'FaceColor', 'g');
% Now mask the unwanted region in between white
area([min(x) max(x)], [threshold_high threshold_high],threshold_low,'EdgeColor', 'none', 'FaceColor', 'w','ShowBaseLine', 'off');
plot(x, y_signal,'k-',lsz,2);
plot([min(x) max(x)], [threshold_high threshold_high],'k--',lsz,2);
plot([min(x) max(x)], [threshold_low threshold_low], 'k--',lsz,2);
Output:
Sreerag K
Sreerag K el 19 de Oct. de 2020
Thank you. It worked fine

Iniciar sesión para comentar.

Más respuestas (0)

Etiquetas

Productos


Versión

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by