pygmt.surface(x=None, y=None, z=None, data=None, **kwargs)[source]

Grids table data using adjustable tension continuous curvature splines.

Surface reads randomly-spaced (x,y,z) triples and produces gridded values z(x,y) by solving:

(1 - T) * L (L (z)) + T * L (z) = 0

where T is a tension factor between 0 and 1, and L indicates the Laplacian operator.

Takes a matrix, xyz triples, or a file name as input.

Must provide either data or x, y, and z.

Full option list at


  • G = outfile

  • I = spacing

  • R = region

  • x/y/z (1d arrays) – Arrays of x and y coordinates and values z of the data points.

  • data (str or 2d array) – Either a data file name or a 2d numpy array with the tabular data.

  • spacing (str) – 'xinc[unit][+e|n][/yinc[unit][+e|n]]'. x_inc [and optionally y_inc] is the grid spacing.

  • region (str or list) – 'xmin/xmax/ymin/ymax[+r][+uunit]'. Specify the region of interest.

  • outfile (str) – Optional. The file name for the output netcdf file with extension .nc to store the grid in.


ret (xarray.DataArray or None) – Return type depends on whether the outfile (G) parameter is set:

  • xarray.DataArray if outfile (G) is not set

  • None if outfile (G) is set (grid output will be stored in outfile)