MATLAB Answers

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

2 views (last 30 days)
hamed
hamed on 16 Sep 2020
Commented: Ameer Hamza on 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

  0 Comments

Sign in to comment.

Accepted Answer

Ameer Hamza
Ameer Hamza on 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 Comments

Show 2 older comments
hamed
hamed on 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);

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by