Problem with patch function

11 Ansichten (letzte 30 Tage)
Oliver Billson
Oliver Billson am 22 Jun. 2021
Kommentiert: Oliver Billson am 23 Jun. 2021
Hi,
I seem to be running into a common issue with the patch function but cant work out where i'm going wrong.
I want to simply fill the area between two lines, in this case, beach profiles. I've done this succesfully for my other beaches but seem to have issues with the one I've shared. Data and faulty figure attached.
Thanks in advance!
I'd like to fill the area within the polygon magenta and then plot the mean line over the top.
Oli

Akzeptierte Antwort

Star Strider
Star Strider am 23 Jun. 2021
I am not certain what you want.
Try this —
DL = load('XZ.mat');
X = DL.X;
Z = DL.Z;
figure
plot(X(1,:), Z(1,:))
hold on
plot(X(2,:), Z(2,:))
patch([X(1,:) fliplr(X(2,:))], [Z(1,:) fliplr(Z(2,:))], 'b', 'FaceAlpha',0.5)
hold off
producing:
I took a wild guess that ‘X(1,:)’ and ‘Z(1,:)’ went together, and ‘X(2,:)’ and ‘Z(2,:)’ did as well. Then the patch call that flips the second vector in each argument (that usually appears to work) created this plot. I only saw two vectors, so no third vector for the ‘mean profile’. I have no idea if that’s supposed to be supplied or is to be calculated (or how to calculate it) from the existing vectors.
.

Weitere Antworten (1)

Walter Roberson
Walter Roberson am 23 Jun. 2021
It is not clear what result you would expect when the data overlaps and one of them has a "twist" ?
load('XZ.mat')
fill(X(1,:),Z(1,:), 'r', 'facealpha', 0.5)
hold on
fill(X(2,:),Z(2,:), 'b', 'facealpha', 0.5)
hold off
  1 Kommentar
Oliver Billson
Oliver Billson am 23 Jun. 2021
Sorry, my question was not particularly clear. Star Strider guessed right and using their code, this is what I produced:

Melden Sie sich an, um zu kommentieren.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by