ListPlot3D

ListPlot3D[array]

generates a three-dimensional plot of a surface representing an array of height values.

ListPlot3D[{{x1,y1,z1},{x2,y2,z2},}]

generates a plot of the surface with heights zi at positions {xi,yi}.

ListPlot3D[{data1,data2,}]

plots the surfaces corresponding to each of the datai.

Details and Options

Examples

open allclose all

Basic Examples  (3)

Use an array of values to define heights for a surface:

Give explicit , , coordinates for points on a surface:

Use different interpolations of data:

Scope  (28)

General Data  (9)

For regular data consisting of values, the and data ranges are taken to be integer values:

Provide explicit and data ranges by using DataRange:

Plot multiple sets of regular data:

For irregular data consisting of triples, the and data ranges are inferred from data:

Plot multiple sets of irregular data:

Areas around where the data is nonreal are excluded:

Use MaxPlotPoints to limit the number of points used:

PlotRange is selected automatically:

Use PlotRange to focus in on areas of interest:

Use RegionFunction to restrict the surface to a region given by inequalities:

Special Data  (4)

Use Quantity to include units with the data:

Include different units for the x, y and z coordinates:

Plot data with uncertainty:

Plot data with uncertainty in x, y and z:

Labeling and Legending  (6)

Label surfaces with Labeled:

Label surfaces with PlotLabels:

Place the label near the surface at an {x,y} value:

Use Callout:

Place a label with specific locations:

Include legends for each surface:

Use Legended to provide a legend for a specific dataset:

Use Placed to change the legend location:

Presentation  (9)

Provide an explicit PlotStyle for the surface:

Provide separate styles for different surfaces:

Add labels:

Color the surface by height:

Provide overlay meshes:

Style the areas between mesh lines:

Provide an interactive Tooltip for a surface:

Fill below a surface:

Use plot theme:

Options  (114)

BoundaryStyle  (6)

Use a black boundary around the edges of the surface:

Use a thick boundary around the edges of the surface:

Use a thick red boundary around the edges of the surface:

Do not use any boundary:

BoundaryStyle applies to holes cut by RegionFunction:

BoundaryStyle applies where there are jumps in the surface:

ClippingStyle  (4)

By default clipped regions have no color:

Do not draw clipped regions:

Make clipped regions partially transparent:

Color clipped regions red at the bottom and blue at the top:

ColorFunction  (6)

Color by scaled , , and values:

Color by scaled and coordinates:

Use ColorData for predefined color gradients:

Named color gradients color in the direction:

ColorFunction has higher priority than PlotStyle:

ColorFunction has lower priority than MeshShading:

ColorFunctionScaling  (2)

Use unscaled coordinates:

Unscaled coordinates are dependent on DataRange:

DataRange  (5)

Arrays of height values are displayed against the number of elements in each direction:

Rescale to the sampling space:

Each dataset is scaled to the same domain:

Triples are interpreted as , , coordinates:

Force interpretation as arrays of height values:

The dataset is normally interpreted as a list of triples:

Filling  (5)

Fill to the bottom:

Filling occurs along the region cut by the RegionFunction:

Fill to both top and bottom:

Fill surface 1 to the bottom with blue and surface 2 to the top with red:

Fill below discrete regions:

FillingStyle  (3)

Fill to the bottom with a variety of styles:

Fill to the plane with red below and blue above:

Fill to the plane from above only:

InterpolationOrder  (5)

Points are normally joined with flat polygons:

Use zero-order or piecewise-constant interpolation:

Use third-order spline interpolation to fit the data:

Interpolation order 0 to 5:

For irregular data, zero-order interpolation gives Voronoi regions for each point:

IntervalMarkers  (2)

Interval markers are bars by default:

Use named IntervalMarkers:

IntervalMarkersStyle  (2)

Interval markers are black by default:

Specify a style for the bars using IntervalMarkersStyle:

LabelingSize  (2)

Textual labels are shown at their actual sizes:

Specify a maximum size for textual labels:

Image labels are automatically resized:

Specify a maximum size for image labels:

Show image labels at their natural sizes:

MaxPlotPoints  (4)

ListPlot3D normally uses all of the points in the dataset:

Limit the number of points used in each direction:

MaxPlotPoints imposes a regular grid on irregular data:

The grid does not extend beyond the convex hull of the original data:

Mesh  (7)

Use no mesh:

Show the initial and final sampling mesh:

The entire mesh for irregular data is a Delaunay triangulation:

Use 5 mesh lines in each direction:

Use 3 mesh lines in the direction and 6 mesh lines in the direction:

Use mesh lines at specific values:

Use different styles for different mesh lines:

MeshFunctions  (3)

Use the value as the mesh function:

Use mesh lines in the and directions:

Use mesh lines corresponding to fixed distances from the origin:

MeshShading  (4)

Use None to remove regions:

Lay a checkerboard pattern over a surface:

MeshShading has a higher priority than PlotStyle:

MeshShading has a higher priority than ColorFunction:

MeshStyle  (2)

Use red mesh lines:

Use red mesh lines in the direction and thick mesh lines in the direction:

NormalsFunction  (4)

Normals are automatically calculated:

Use None to get flat shading for all the polygons:

Vary the effective normals used on the surface:

VertexNormals has a higher priority than NormalsFunction:

PerformanceGoal  (2)

Generate a higher-quality plot:

Emphasize performance, possibly at the cost of quality:

PlotLabels  (3)

Specify text to label surfaces:

Specify a label at a position:

Specify labels to identify surfaces:

PlotLegends  (5)

Use placeholders to identify plot styles:

Use specific labels:

Use Placed to control legend position:

Use SwatchLegend to change the appearance:

Create a legend based on a color function:

Use BarLegend to change the appearance:

PlotRange  (3)

Automatically compute the range:

Use all points to compute the range:

Use an explicit range to emphasize features:

PlotStyle  (6)

Plot two surfaces with different styles:

Color a surface with diffuse purple:

Use Specularity to get highlights:

Use Opacity to get transparent surfaces:

Use separate styles for each of the surfaces:

Produce a wire mesh:

PlotTheme  (4)

Use a theme with simple ticks and grid lines in a bright color scheme:

Change the color scheme:

Change the appearance by modifying Mesh and MeshShading:

Create a thick surface for 3D printing:

RegionFunction  (5)

Plot over a region in :

The region depends on DataRange:

Filling will fill from the region boundary:

Regions do not have to be connected:

Use any logical combination of conditions:

ScalingFunctions  (9)

By default, plots have linear scales in each direction:

Use a log scale in the direction:

Use a linear scale in the direction that shows smaller numbers at the top:

Use a reciprocal scale in the direction:

Use different scales in the and directions:

Reverse the axis without changing the axis:

Use a scale defined by a function and its inverse:

Positions in Ticks and FaceGrids are automatically scaled:

PlotRange is automatically scaled:

TextureCoordinateFunction  (4)

Textures use scaled and coordinates by default:

Use the and parameters:

Use unscaled coordinates:

Use textures to highlight how parameters map onto a surface:

TextureCoordinateScaling  (1)

Use scaled or unscaled coordinates for textures:

VertexColors  (3)

ListPlot3D normally uses an uncolored surface:

Specify random colors for each vertex:

Specify colors for multiple datasets:

VertexNormals  (3)

ListPlot3D automatically computes surface normals from the geometry:

Specify random normals for each vertex:

Specify normals for multiple datasets:

Applications  (5)

Plot an indexed family for functions:

Show iterates of the logistic map, emphasizing values at similar steps:

Show iterates of the logistic map, emphasizing values for particular initial values:

Plot ClebschGordan coefficients as a function of and :

A square pulse and its discrete Fourier transform:

Show a color elevation map of the state of Colorado by using elevation data from cities:

Properties & Relations  (14)

ListPlot3D produces an interpolating function surface:

ListSurfacePlot3D produces an approximating general surface:

ListPlot3D constructs a function surface that oscillates rapidly in the direction:

When using multiple values for each , value, the duplicates are discarded by ListPlot3D:

ListSurfacePlot3D still reconstructs the general surface:

ListPlot3D associates values, normals, and colors with the vertices of polygons:

Raster, ArrayPlot, MatrixPlot, and ReliefPlot associate values with the whole polygon:

Use Plot3D for functions:

Use ListPointPlot3D to show three-dimensional points:

Use ListContourPlot to create contours from continuous data:

Use ListDensityPlot to create densities from continuous data:

Use ArrayPlot for arrays of discrete data:

Use MatrixPlot for structural plots of matrices:

Use ReliefPlot for matrices corresponding to medical and geographic values:

Use ListLogPlot, ListLogLogPlot, and ListLogLinearPlot for logarithmic plots:

Use ListPolarPlot for polar plots:

Use DateListPlot to show data over time:

Use ParametricPlot3D for three-dimensional parametric curves and surfaces:

Possible Issues  (2)

The appearance of a plot may depend on the source of the data:

An ×3 matrix is by default interpreted as a list of triples:

Use DataRange->All to force interpretation as a matrix of values:

Or provide an explicit list of data ranges to force interpretation as a matrix of values:

Neat Examples  (2)

Voronoi region interpolation:

Use an image from ExampleData:

Plot the dataset with vertex colors, simulating the texture:

Introduced in 1988
 (1.0)
 |
Updated in 2007
 (6.0)
2010
 (8.0)
2012
 (9.0)
2014
 (10.0)
2016
 (11.0)
2017
 (11.1)
2019
 (12.0)
2020
 (12.1)