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

  • V = verbose

  • 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.

  • verbose (str) –

    Select verbosity level [Default is w], which modulates the messages written to stderr. Choose among 7 levels of verbosity:

    • q - Quiet, not even fatal error messages are produced

    • e - Error messages only

    • w - Warnings [Default]

    • t - Timings (report runtimes for time-intensive algorthms);

    • i - Informational messages (same as “verbose=True”)

    • c - Compatibility warnings

    • d - Debugging messages


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)