MATLAB Answers

How do I plot a contour map on the surface of a 3-d surface?

73 views (last 30 days)
Joseph
Joseph on 31 Jan 2016
Commented: GiWon Hong on 14 Feb 2020
The idea is similar to using "surf(X,Y,Z,C)" but I want contour lines in addition to the coloring provided by C. The contour lines need to correspond to f(x,y,z), not x, y, or z. If there is a non-toolbox specific answer, that would be great. Thanks.

Accepted Answer

Mike Garrity
Mike Garrity on 1 Feb 2016
Edited: Mike Garrity on 1 Feb 2016
A simple tricky I use sometimes is to use a colormap with a small number of colors.
[x,y] = meshgrid(linspace(-pi,pi,150));
z = cos(x).*cos(y);
c = sin(x).*sin(y);
surf(x,y,z,c,'FaceColor','interp','EdgeColor','none')
zlabel('cosine')
colormap(lines(7))
c = colorbar;
c.Label.String = 'sine';
view([-45 60])
This makes my CData variable look like what the contourf function would draw.
  3 Comments
GiWon Hong
GiWon Hong on 14 Feb 2020
Thanks, It is very helpful.
I used colormap(jet(31)) instead of colormap(lines(7)). It gives more contour likely view.

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!