Filling between several curves in a figure using fill or patch functions

16 vues (au cours des 30 derniers jours)
hamed
hamed le 16 Sep 2020
Commenté : Ameer Hamza le 22 Sep 2020
Hi
I have a figure, in which 4 curves are plotted. I want to fill between these curves twp by two with a specific color (red, green, ...) I attached the plots I want to fill. How can I do that?
Thanks

Réponse acceptée

Ameer Hamza
Ameer Hamza le 16 Sep 2020
See this example
y = 1:400;
x1 = 0.1*rand(size(y));
x2 = 0.1*rand(size(y))+1;
x3 = 0.1*rand(size(y))+0.4;
x4 = 0.1*rand(size(y))+1.4;
ax = axes();
hold(ax);
plot(x1, y);
plot(x2, y);
Y = [y fliplr(y)];
X = [x1 fliplr(x2)];
p = patch(X, Y, 'r', 'FaceAlpha', 0.2);
Y = [y fliplr(y)];
X = [x3 fliplr(x4)];
p = patch(X, Y, 'g', 'FaceAlpha', 0.2);
  5 commentaires
hamed
hamed le 21 Sep 2020
Modifié(e) : hamed le 21 Sep 2020
Hi again Ameer,
I plotted a 1D signal in Matlab, and then I want to show the value of each specific sample by a district colour. something like what "imagesc" command does for 2D plots. I attached an example of what is in my mind. Any suggestions, please?
This is what I have written, but the distribution of the values is weird! I expected a linear behaviour of the values at each sample.
p(1, 2).select();
twt = tie_out_mid.well_log.logs.twt(97:end);
y = twt';
CGR = tie_out_mid.well_log.logs.cgr(97:end);
x = CGR';
x0 = zeros(size(x))';
Y1 = [y fliplr(y)];
X1 = [x0 fliplr(x)];
ColorData = vertcat (x', flip(x'));
patch(X1, Y1, ColorData);
Ameer Hamza
Ameer Hamza le 22 Sep 2020
Can you show the expected output?

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by