Trying to create a filled colour contour plot. Specifically in the form of a depth profile.
Show older comments
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 Comments
Walter Roberson
on 2 Mar 2011
Are your X and Y over grid, or are they scattered ?
Joshua
on 3 Mar 2011
Sarah Wait Zaranek
on 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
on 4 Mar 2011
Walter Roberson
on 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
on 4 Mar 2011
What are the sizes returned by:
whos x y z
Joshua
on 4 Mar 2011
Joshua
on 4 Mar 2011
Matt Tearle
on 4 Mar 2011
but scatter(x,z) gives an error? what is the error message?
Joshua
on 4 Mar 2011
Accepted Answer
More Answers (1)
Matt Tearle
on 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 Comments
Sarah Wait Zaranek
on 3 Mar 2011
Exactly what I was thinking, Matt.
Joshua
on 4 Mar 2011
Matt Tearle
on 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
on 4 Mar 2011
Matt Tearle
on 4 Mar 2011
Delete that line. See new answer for the full code
Categories
Find more on Annotations in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!