Surface plot
surf(X,Y,Z)
surf(X,Y,Z,C)
surf(Z)
surf(Z,C)
surf(ax,___)
surf(___,Name,Value)
s = surf(___)
surf(
creates a surface and uses the column and
row indices of the elements in Z
)Z
as the x
and y coordinates, respectively.
surf(
plots
into the axes specified by ax
,___)ax
instead of the current
axes. Specify the axes as the first input argument.
surf(___,
specifies
surface properties using one or more namevalue pair arguments. For
example, Name,Value
)'FaceAlpha',0.5
creates a semitransparent
surface. Specify namevalue pairs after all other input arguments.
s = surf(___)
returns the chart
surface object. Use s
to modify the surface after
it is created. For a list, see Surface Properties.
Create X
, Y
, and Z
as matrices of the same size. Then plot the data as a surface. The surface uses Z
for both the height and color data.
[X,Y] = meshgrid(1:0.5:10,1:20); Z = sin(X) + cos(Y); surf(X,Y,Z)
Specify the colors for a surface plot by including a fourth matrix input, C
. Use colormap colors by specifying C
as a matrix the same size as Z
. Add a colorbar to the graph to show how the data values in C
map to the colors in the colormap.
[X,Y] = meshgrid(1:0.5:10,1:20); Z = sin(X) + cos(Y); C = X.*Y; surf(X,Y,Z,C) colorbar
Specify the colors for a surface plot by including a fourth matrix input, CO
. Use true colors by creating CO
as an mbynby3 array of RGB triplet values, where Z
is mbyn. The first page of the array indicates the red component for each color; the second page indicates the green component; and the third page indicates the blue component.
[X,Y,Z] = peaks(25); CO(:,:,1) = zeros(25); % red CO(:,:,2) = ones(25).*linspace(0.5,0.6,25); % green CO(:,:,3) = ones(25).*linspace(0,1,25); % blue surf(X,Y,Z,CO)
Create a semitransparent surface by setting the FaceAlpha
property as a namevalue pair argument. Assign the surface object to the variable s
.
[X,Y] = meshgrid(5:.5:5);
Z = Y.*sin(X)  X.*cos(Y);
s = surf(X,Y,Z,'FaceAlpha',0.5)
s = Surface with properties: EdgeColor: [0 0 0] LineStyle: '' FaceColor: 'flat' FaceLighting: 'flat' FaceAlpha: 0.5000 XData: [21x21 double] YData: [21x21 double] ZData: [21x21 double] CData: [21x21 double] Show all properties
Use s
to access and modify properties of the surface object after it is created. For example, turn off the display of the edges by setting the EdgeColor
property.
s.EdgeColor = 'none';
X
— x coordinatesx coordinates, specified as a matrix the
same size as Z
or as a vector with length n
,
where [m,n] = size(Z)
. To create a matrix for arbitrary
domains, use the meshgrid
function.
The XData
property of the surface object
stores the x values.
Example: [X,Y] = meshgrid(5:0.5:5)
Data Types: single
 double
 int8
 int16
 int32
 int64
 uint8
 uint16
 uint32
 uint64
 categorical
 datetime
 duration
Y
— y coordinatesy coordinates, specified as a matrix the
same size as Z
or as a vector with length m
,
where [m,n] = size(Z)
. To create a matrix for arbitrary
domains, use the meshgrid
function.
The YData
property of the surface object
stores the y values.
Example: [X,Y] = meshgrid(5:0.5:5)
Data Types: single
 double
 int8
 int16
 int32
 int64
 uint8
 uint16
 uint32
 uint64
 categorical
 datetime
 duration
Z
— z coordinatesz coordinates, specified as a matrix. If
you do not specify the colors, then Z
also sets
the surface colors.
The ZData
property of the surface object
stores the z values.
Example: Z = [1 2 3; 4 5 6]
Example: Z = sin(x) + cos(y)
Data Types: single
 double
 int8
 int16
 int32
 int64
 uint8
 uint16
 uint32
 uint64
 categorical
 datetime
 duration
C
— Color for each vertexm
byn
by3
array
of RGB tripletsColor for each vertex, specified as a matrix the same size as Z
or
as an m
byn
by3
array
of RGB triplets, where Z
is m
byn
.
If you want to use colormap colors, then specify C
as
a matrix. The CDataMapping
property of the surface
object controls how the values in C
map to colors
in the colormap.
If you want to use true colors, then specify C
as
an array of RGB triplets.
The CData
property of the surface
object stores the color data. For additional control over the surface
coloring, use the FaceColor
and EdgeColor
properties.
ax
— Axes in which to plotAxes in which to plot, specified as an axes object. If you do
not specify the axes, then surf
plots into the
current axes.
Specify optional
commaseparated pairs of Name,Value
arguments. Name
is
the argument name and Value
is the corresponding value.
Name
must appear inside quotes. You can specify several name and value
pair arguments in any order as
Name1,Value1,...,NameN,ValueN
.
surf(X,Y,Z,'FaceAlpha',0.5,'EdgeColor','none')
creates
a semitransparent surface with no edges drawn.The properties listed here are only a subset. For a full list, see Surface Properties.
'EdgeColor'
— Edge line color[0 0 0]
(default)  'none'
 'flat'
 'interp'
 RGB triplet  hexadecimal color code  'r'
 'g'
 'b'
 ...Edge line color, specified as one of the values listed here.
The default color of [0 0 0]
corresponds to black
edges.
Value  Description 

'none'  Do not draw the edges. 
'flat'  Use a different color for each edge based on the values
in the 
'interp' 
Use interpolated coloring for each edge based on the values in the

RGB triplet, hexadecimal color code, or color name 
Use the specified color for all the edges. This option does not use the color
values in the

RGB triplets and hexadecimal color codes are useful for specifying custom colors.
An RGB triplet is a threeelement row vector whose elements specify the
intensities of the red, green, and blue components of the color. The intensities
must be in the range [0,1]
; for example, [0.4 0.6
0.7]
.
A hexadecimal color code is a character vector or a string scalar that starts
with a hash symbol (#
) followed by three or six hexadecimal
digits, which can range from 0
to F
. The
values are not case sensitive. Thus, the color codes
'#FF8800'
, '#ff8800'
,
'#F80'
, and '#f80'
are
equivalent.
Alternatively, you can specify some common colors by name. This table lists the named color options, the equivalent RGB triplets, and hexadecimal color codes.
Color Name  Short Name  RGB Triplet  Hexadecimal Color Code  Appearance 

'red'  'r'  [1 0 0]  '#FF0000'  
'green'  'g'  [0 1 0]  '#00FF00'  
'blue'  'b'  [0 0 1]  '#0000FF'  
'cyan'  'c'  [0 1 1]  '#00FFFF'  
'magenta'  'm'  [1 0 1]  '#FF00FF'  
'yellow'  'y'  [1 1 0]  '#FFFF00'  
'black'  'k'  [0 0 0]  '#000000'  
'white'  'w'  [1 1 1]  '#FFFFFF' 
Here are the RGB triplets and hexadecimal color codes for the default colors MATLAB^{®} uses in many types of plots.
RGB Triplet  Hexadecimal Color Code  Appearance 

[0 0.4470 0.7410]  '#0072BD'  
[0.8500 0.3250 0.0980]  '#D95319'  
[0.9290 0.6940 0.1250]  '#EDB120'  
[0.4940 0.1840 0.5560]  '#7E2F8E'  
[0.4660 0.6740 0.1880]  '#77AC30'  
[0.3010 0.7450 0.9330]  '#4DBEEE'  
[0.6350 0.0780 0.1840]  '#A2142F' 
'LineStyle'
— Line style''
(default)  ''
 ':'
 '.'
 'none'
Line style, specified as one of the options listed in this table.
Line Style  Description  Resulting Line 

''  Solid line 

''  Dashed line 

':'  Dotted line 

'.'  Dashdotted line 

'none'  No line  No line 
'FaceColor'
— Face color'flat'
(default)  'interp'
 'none'
 'texturemap'
 RGB triplet  hexadecimal color code  'r'
 'g'
 'b'
 ...Face color, specified as one of the values in this table.
Value  Description 

'flat'  Use a different color for each face based on the values
in the 
'interp' 
Use interpolated coloring for each face based on the values in the

RGB triplet, hexadecimal color code, or color name 
Use the specified color for all the faces. This option does not use the color
values in the

'texturemap'  Transform the color data in CData so that
it conforms to the surface. 
'none'  Do not draw the faces. 
RGB triplets and hexadecimal color codes are useful for specifying custom colors.
An RGB triplet is a threeelement row vector whose elements specify the
intensities of the red, green, and blue components of the color. The intensities
must be in the range [0,1]
; for example, [0.4 0.6
0.7]
.
A hexadecimal color code is a character vector or a string scalar that starts
with a hash symbol (#
) followed by three or six hexadecimal
digits, which can range from 0
to F
. The
values are not case sensitive. Thus, the color codes
'#FF8800'
, '#ff8800'
,
'#F80'
, and '#f80'
are
equivalent.
Alternatively, you can specify some common colors by name. This table lists the named color options, the equivalent RGB triplets, and hexadecimal color codes.
Color Name  Short Name  RGB Triplet  Hexadecimal Color Code  Appearance 

'red'  'r'  [1 0 0]  '#FF0000'  
'green'  'g'  [0 1 0]  '#00FF00'  
'blue'  'b'  [0 0 1]  '#0000FF'  
'cyan'  'c'  [0 1 1]  '#00FFFF'  
'magenta'  'm'  [1 0 1]  '#FF00FF'  
'yellow'  'y'  [1 1 0]  '#FFFF00'  
'black'  'k'  [0 0 0]  '#000000'  
'white'  'w'  [1 1 1]  '#FFFFFF' 
Here are the RGB triplets and hexadecimal color codes for the default colors MATLAB uses in many types of plots.
RGB Triplet  Hexadecimal Color Code  Appearance 

[0 0.4470 0.7410]  '#0072BD'  
[0.8500 0.3250 0.0980]  '#D95319'  
[0.9290 0.6940 0.1250]  '#EDB120'  
[0.4940 0.1840 0.5560]  '#7E2F8E'  
[0.4660 0.6740 0.1880]  '#77AC30'  
[0.3010 0.7450 0.9330]  '#4DBEEE'  
[0.6350 0.0780 0.1840]  '#A2142F' 
'FaceAlpha'
— Face transparency[0,1]
 'flat'
 'interp'
 'texturemap'
Face transparency, specified as one of these values:
Scalar in range [0,1]
—
Use uniform transparency across all the faces. A value of 1
is
fully opaque and 0
is completely transparent. Values
between 0
and 1
are semitransparent.
This option does not use the transparency values in the AlphaData
property.
'flat'
— Use a different
transparency for each face based on the values in the AlphaData
property.
The transparency value at the first vertex determines the transparency
for the entire face. First you must specify the AlphaData
property
as a matrix the same size as the ZData
property.
The FaceColor
property also must be set to 'flat'
.
'interp'
— Use interpolated
transparency for each face based on the values in AlphaData
property.
The transparency varies across each face by interpolating the values
at the vertices. First you must specify the AlphaData
property
as a matrix the same size as the ZData
property.
The FaceColor
property also must be set to 'interp'
.
'texturemap'
— Transform
the data in AlphaData
so that it conforms to
the surface.
'FaceLighting'
— Effect of light objects on faces'flat'
(default)  'gouraud'
 'none'
Effect of light objects on faces, specified as one of these values:
'flat'
— Apply light uniformly
across each face. Use this value to view faceted objects.
'gouraud'
— Vary the light
across the faces. Calculate the light at the vertices and then linearly
interpolate the light across the faces. Use this value to view curved
surfaces.
'none'
— Do not apply light
from light objects to the faces.
To add a light object to the axes, use the light
function.
The 'phong'
value has been removed. Use 'gouraud'
instead.
Usage notes and limitations:
This function accepts GPU arrays, but does not run on a GPU.
For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
Usage notes and limitations:
This function operates on distributed arrays, but executes in the client MATLAB.
For more information, see Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox).
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
Select web siteYou can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.