Creating Mesh and Surface Plots

About Mesh and Surface Plots

MATLAB® defines a surface by the z-coordinates of points above a grid in the x-y plane, using straight lines to connect adjacent points. The mesh and surf functions display surfaces in three dimensions.

  • mesh produces wireframe surfaces that color only the lines connecting the defining points.

  • surf displays both the connecting lines and the faces of the surface in color.

MATLAB colors surfaces by mapping z-data values to indexes into the figure colormap.

Visualizing Functions of Two Variables

To display a function of two variables, z = f (x,y),

  1. Generate X and Y matrices consisting of repeated rows and columns, respectively, over the domain of the function.

  2. Use X and Y to evaluate and graph the function.

The meshgrid function transforms the domain specified by a single vector or two vectors x and y into matrices X and Y for use in evaluating functions of two variables. The rows of X are copies of the vector x and the columns of Y are copies of the vector y.

Graphing the sinc Function

This example shows how to evaluate and graph the two-dimensional sinc function, sin( r )/ r , between the x and y directions. R is the distance from the origin, which is at the center of the matrix. Adding eps (a very small value) prevents a hole in the mesh at the point where R = 0.

[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
mesh(X,Y,Z)

By default, MATLAB uses the current colormap to color the mesh.

Colored Surface Plots

This example shows how to graph the sinc function as a surface plot, specify a colormap, and add a color bar to show the mapping of data to color.

A surface plot is similar to a mesh plot except that the rectangular faces of the surface are colored. The color of each face is determined by the values of Z and the colormap (a colormap is an ordered list of colors).

[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
surf(X,Y,Z)
colormap hsv
colorbar

Making Surfaces Transparent

This example shows how you can make the faces of a surface transparent to a varying degree. Transparency (referred to as the alpha value) can be specified for the whole object or can be based on an alphamap , which behaves similarly to colormaps.

[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
surf(X,Y,Z)
colormap hsv
alpha(.4)

MATLAB displays a surface with a face alpha value of 0.4. Alpha values range from 0 (completely transparent) to 1 (not transparent).

Illuminating Surface Plots with Lights

This example shows the same surface as the previous examples, but colors it red and removes the mesh lines. A light object is then added to the left of the "camera" (the camera is the location in space from where you are viewing the surface).

[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
surf(X,Y,Z,'FaceColor','red','EdgeColor','none')
camlight left;
lighting phong

Lighting is the technique of illuminating an object with a directional light source. In certain cases, this technique can make subtle differences in surface shape easier to see. Lighting can also be used to add realism to three-dimensional graphs.

Manipulating the Surface

The figure toolbar and the camera toolbar provide ways to explore three-dimensional graphics interactively. Display the camera toolbar by selecting Camera Toolbar from the figure View menu.

The following picture shows both toolbars with the Rotate 3D tool selected.

These tools enable you to move the camera around the surface object, zoom, add lighting, and perform other viewing operations without issuing commands.

Was this topic helpful?