Trying to create a filled colour contour plot. Specifically in the form of a depth profile.
Mostrar comentarios más antiguos
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 comentarios
Walter Roberson
el 2 de Mzo. de 2011
Are your X and Y over grid, or are they scattered ?
Joshua
el 3 de Mzo. de 2011
Sarah Wait Zaranek
el 3 de Mzo. de 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
el 4 de Mzo. de 2011
Walter Roberson
el 4 de Mzo. de 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
el 4 de Mzo. de 2011
What are the sizes returned by:
whos x y z
Joshua
el 4 de Mzo. de 2011
Joshua
el 4 de Mzo. de 2011
Matt Tearle
el 4 de Mzo. de 2011
but scatter(x,z) gives an error? what is the error message?
Joshua
el 4 de Mzo. de 2011
Respuesta aceptada
Más respuestas (1)
Matt Tearle
el 3 de Mzo. de 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 comentarios
Sarah Wait Zaranek
el 3 de Mzo. de 2011
Exactly what I was thinking, Matt.
Joshua
el 4 de Mzo. de 2011
Matt Tearle
el 4 de Mzo. de 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
el 4 de Mzo. de 2011
Matt Tearle
el 4 de Mzo. de 2011
Delete that line. See new answer for the full code
Categorías
Más información sobre Annotations en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!