Trying to create a filled colour contour plot. Specifically in the form of a depth profile.
Afficher commentaires plus anciens
Hello, I am trying to create a depth profile of a stretch of water, with X being Distance, Y being Depth and Z being the coloured fill for Salinity.
I've found it possible to create an X-Y plot of the depth and distance but can't figure how to add the Z and get it as the coloured fill.
I have however already looked at the graph tools section and inputted x, y and z variable inputs, but it still only gives me a graph of x or y.
FYI. each variable was originally in one variable ('num') but i have since seperated into 'Distance','Depth','Salinity'. Also all columns have data of the same length (1;332). Can anyone help me?
10 commentaires
Walter Roberson
le 2 Mar 2011
Are your X and Y over grid, or are they scattered ?
Joshua
le 3 Mar 2011
Sarah Wait Zaranek
le 3 Mar 2011
Do you want a filled contour plot (aka contourf)? Or plots x vs y with z being the color of the points (scatter(x,y,z)? Or something else?
Joshua
le 4 Mar 2011
Walter Roberson
le 4 Mar 2011
Please double check that z is the same size and shape as x and y.
You could try scatter3(x,y,z) if the sizes are the same
Matt Tearle
le 4 Mar 2011
What are the sizes returned by:
whos x y z
Joshua
le 4 Mar 2011
Joshua
le 4 Mar 2011
Matt Tearle
le 4 Mar 2011
but scatter(x,z) gives an error? what is the error message?
Joshua
le 4 Mar 2011
Réponse acceptée
Plus de réponses (1)
Matt Tearle
le 3 Mar 2011
Something like this, perhaps:
% invent some x,y,z data
x = rand(100,1)*4-2;
y = rand(100,1)*4-2;
z = x.*exp(-x.^2-y.^2);
% interpolate onto regular grid
F = TriScatteredInterp(x,y,z);
[qx,qy] = meshgrid(linspace(min(x),max(x)),linspace(min(y),max(y)));
qz = F(qx,qy);
% filled contour plot
contourf(qx,qy,qz)
5 commentaires
Sarah Wait Zaranek
le 3 Mar 2011
Exactly what I was thinking, Matt.
Joshua
le 4 Mar 2011
Matt Tearle
le 4 Mar 2011
Ah, I'm guessing you have an old version of MATLAB? In that case, delete that line (obviously), and replace "qz = F(...)" with
qz = griddata(x,y,z,qx,qy);
Joshua
le 4 Mar 2011
Matt Tearle
le 4 Mar 2011
Delete that line. See new answer for the full code
Catégories
En savoir plus sur Contour Plots dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!