For 3D surface plots, do you like the command, 'shading interp'?

Hi there!
For 3D surface plots, do you like the command, 'shading interp'? When I use it, I notice that the color variation on the surface is quite smooth, with the faint lines that typically show the cross sections of the surface not visible anymore. However, I'm not sure that this is a good thing.
Thanks in advance,

 Accepted Answer

There are a few options that you can experiment with —
[X,Y] = ndgrid(-5:0.5:5);
Z = exp(-(X.^2 + Y.^2)/10);
figure
surf(X, Y, Z)
colormap(turbo)
title('Original')
figure
surf(X, Y, Z)
colormap(turbo)
shading('interp')
title('shading(''interp'')')
figure
surf(X, Y, Z, FaceColor='interp')
colormap(turbo)
title('FaceColor=''interp''')
figure
surf(X, Y, Z, EdgeColor='interp')
colormap(turbo)
title('EdgeColor=''interp''')
figure
surf(X, Y, Z, FaceColor='interp', EdgeColor='interp')
colormap(turbo)
title('FaceColor=''interp'', EdgeColor=''interp''')
.

4 Comments

Hi Star Strider,
Did you, by any chance, post this answer going from "worst" to "best", so that using both FaceColor interp and EdgeColor interp is the best way to present color variation on a surface? What exactly is a FaceColor and what is an EdgeColor? Is FaceColor the color along the surface area of the figure, while EdgeColor is the color along the edges of the figure?
If I use all three of these features: EdgeColor interp, FaceColor interp, and shading interp, then I don't see how the color variation on the surface is any different from, say, just using EdgeColor interp.
If I use EdgeColor interp, then I don't see how adding FaceColor interp is helping.
Thanks!
My pleasure!
They are in no particular order, other than the first two being individual options, and the third both options combined. Both options combined are the equivalent of shading('interp').
Surfaces in MATLAB are collecitions of ‘patches’ (see the patch function documentation for details), and ‘edges’ are the patch outlines (in this context). Interpolating the edge colours does only that, so the edge lines are the colour of the appropriate side of the patch. Interpolating the face colours does exactly that, leaving the edge lines unchanged. Interpolating the edge colours does exactly that, leaving the face colours unchanged. Interpolating both is the same as shading('interp').
‘If I use EdgeColor interp, then I don't see how adding FaceColor interp is helping.
If interpolating the edges is all you want to do, stop there. There is no need to interpolate the face colours if you don’t want to. That’s entirely your decision.
.
Hi Star Strider!
Thanks so much! It's been so long since I worked on this! I abandoned this 3D surface plot altogether, a while back, and focused on some good 2D figures instead -- which got really good, I think. Hopefully at some point in the near future, I'll start work again on a surface plot.
Talk soon and take care!
As always, my pleasure!
I'll help with the surface plots if necessary.

Sign in to comment.

More Answers (0)

Products

Release

R2024b

Community Treasure Hunt

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

Start Hunting!