# How to plot a 3D surface with a simple black and white style?

Mathematica has great plotting capabilities. However, sometimes what is needed is a very basic black and white plot without textures, lighting, glow and other complex features. So, here is my question: what kind of Plot3D options will allow me to get something similar to

I would say you go for the Lighting option:

Plot3D[Exp[-(x^2 + y^2)], {x, -2, 2}, {y, -2, 2},
Lighting -> {{"Ambient", White}}, PlotRange -> All, Mesh -> {20}]


• In fact, Lighting -> {White} is enough. Apr 3, 2013 at 4:54
• yes, but I wanted to mention explicitly that it's the ambient light which prevents shading. Apr 3, 2013 at 5:01
• In V10 PlotStyle->White is necessary to deal with an orange plot. One can also add PlotPoints->22, MaxRecursion->0 to obtain really old-school plot :) Sep 7, 2014 at 13:11

Just a few alternatives. (from @Mr.Wizard) If one prefers to have it simple but to keep shading, then

Plot3D[Exp[-(x^2 + y^2)], {x, -2, 2}, {y, -2, 2},
Lighting -> "Neutral", PlotRange -> All, Mesh -> {20}]


Some may want to have transparent mesh

Plot3D[Exp[-(x^2 + y^2)], {x, -2, 2}, {y, -2, 2}, PlotRange -> All,
Mesh -> {20}, PlotStyle -> Opacity[0], MeshStyle -> Opacity[.5]]


or from @J.M.

Plot3D[Exp[-(x^2 + y^2)], {x, -2, 2}, {y, -2, 2},
PlotStyle -> FaceForm[None], PlotRange -> All, Mesh -> {20}]


• Do you have any thoughts about ColorFunction -> (White &) versus Lighting -> "Neutral"? I typically use the latter. Apr 3, 2013 at 6:22
• For the second: PlotStyle -> FaceForm[None] works nicely, too. Apr 3, 2013 at 7:51
• @Mr.Wizard Lighting -> "Neutral" is more efficient I think - I edited it into my code. Thx ;) Apr 3, 2013 at 15:52
• @J.M. Yes, nice observation ;) Apr 3, 2013 at 15:53
• @Mr. Wizard, through close reading of the docs for Plot3D[], it would seem that ColorFunction -> (White &) is entirely equivalent to the default ColorFunction -> Automatic, so one does not really need to tweak ColorFunction for a plain Jane plot... Apr 3, 2013 at 16:02

If one wants a simple wireframe mesh, as in Vitaliy's answer, here's yet another method:

DeleteCases[Plot3D[Exp[-(x^2 + y^2)], {x, -2, 2}, {y, -2, 2}, Mesh -> {20}], _Polygon, ∞]


As it turns out, however, there is an even simpler way to generate a nice wiremesh:

Plot3D[Exp[-(x^2 + y^2)], {x, -2, 2}, {y, -2, 2}, Mesh -> {20}, PlotStyle -> None]

• There's a certain beauty to this approach. "Polygons, begone!" :-) Apr 11, 2013 at 12:58
• That's more or less how I read the code, too. :) Apr 11, 2013 at 13:20

Just to mention, for me the accepted answer does not bring the desired result with Mathematica 10. Instead, what I get when running

Plot3D[
Cos[2 Norm[{x, y}]], {x, 0, 10}, {y, 0, 10},
Lighting -> {"Ambient", White},
PlotRange -> All, Mesh -> {20}, BoxRatios -> {1, 1, 0.1},
Boxed -> False, Axes -> False]


is this:

However, a color function did the difference for me:

Plot3D[
Cos[2 Norm[{x, y}]], {x, 0, 10}, {y, 0, 10},
Lighting -> {"Ambient", White},
ColorFunction -> Function[{x, y, z}, White],
PlotRange -> All, Mesh -> {20}, BoxRatios -> {1, 1, 0.1},
Boxed -> False, Axes -> False]


• ColorFunction -> (White &) also works. Mar 6, 2018 at 13:51
• "Just to mention, for me the accepted answer does not bring the desired result with Mathematica 10. " - The default light sources changed in version 10(?), while the answers that came before you were done in version 8. Mar 6, 2018 at 14:46
• You should be able to get this with PlotStyle->White too. Might even be faster. Mar 6, 2018 at 17:55