How to make a graph that shows evolution of a variable in time through different depths in a lake.

9 views (last 30 days)
Marmar on 20 Oct 2018
Edited: jonas on 20 Oct 2018
Hi all, I saw this graph a lot in papers (like the image below), but I do not have any idea how to make it in Matlab. I want to show a lake's temperature evolution through time in different depths, like the graph I attached. I have a matrix: Z=3705x38 matrix which shows data from 38 depth levels during 3705 days (each column is data from a sensor deployed in the depth of the lake). Please consider that the depth intervals are not the same and I want to show that is lake. so as in the picture, the x axis should be the time, the y axis should be depth and the graph legend shows the temperature range. Your advice will help me tons
John D'Errico on 20 Oct 2018
Please don't post a duplicate question just to attach the same image in two different ways.

jonas on 20 Oct 2018
Edited: jonas on 20 Oct 2018

Just create a surface object.

```d  =  is your depth (1x38)
t  =  is your time (1x3705)
Te  =  is your temperature (3705x38)
```
```surf(t,d,Te,'edgecolor','interp')
set(gca,'YDir','reverse')
```

simple as that. I would consider first changing the time to a datetime or duration array.

Marmar on 20 Oct 2018
Thanks but it gives me a 3D plot, I need a 2D plot like the example I sent.
jonas on 20 Oct 2018
Edited: jonas on 20 Oct 2018
set the view to
view([0 90])
I don't know why you spam the forum with this question. It's a very basic plot. You could also use pcolor, imagesc or contourf. The syntax is literally the same.
contourf(t,d,Te)
imagesc(t,d,Te)
pcolor(t,d,Te)
The image you uploaded is however not a contour plot. It is most likely a 3d plot.

Image Analyst on 20 Oct 2018
I'd use imshow() with a colormap. If you need to digitize spatial data that is not yet on a regular grid, with values at every point, then you can use scatteredInterpolant. If you can't figure it out, attach your Z array in a .mat file.
Marmar on 20 Oct 2018
Thanks, but it does not give me the data I want. I am sure I shoud use contourf, but I don't know how to use it :(