Figure.grdcontour(grid, *, annotation=None, frame=None, levels=None, label_placement=None, projection=None, limit=None, cut=None, region=None, resample=None, verbose=None, pen=None, label=None, panel=None, coltypes=None, perspective=None, transparency=None, **kwargs)

Convert grids or images to contours and plot them on maps.

Takes a grid file name or an xarray.DataArray object as input.

Full option list at


  • A = annotation

  • B = frame

  • C = levels

  • G = label_placement

  • J = projection

  • L = limit

  • Q = cut

  • R = region

  • S = resample

  • V = verbose

  • W = pen

  • c = panel

  • f = coltypes

  • l = label

  • p = perspective

  • t = transparency

  • grid (str or xarray.DataArray) –

    Name of the input grid file or the grid loaded as a xarray.DataArray object.

    For reading a specific grid file format or applying basic data operations, see for the available modifiers.

  • levels (float, list, or str) –

    Specify the contour lines to generate.

    • The file name of a CPT file where the color boundaries will be used as contour levels.

    • The file name of a 2 (or 3) column file containing the contour levels (col 0), (C)ontour or (A)nnotate (col 1), and optional angle (col 2).

    • A fixed contour interval.

    • A list of contour levels.

  • annotation (float, list, or str) –

    Specify or disable annotated contour levels, modifies annotated contours specified in levels.

    • Specify a fixed annotation interval.

    • Specify a list of annotation levels.

    • Disable all annotations by setting annotation="n".

    • Adjust the appearance by appending different modifiers, e.g., "annot_int+f10p+gred" gives annotations with a font size of 10 points and a red filled box. For all available modifiers see

  • limit (str or list of 2 ints) – low/high. Do no draw contours below low or above high, specify as string

  • cut (str or int) – Do not draw contours with less than cut number of points.

  • resample (str or int) – Resample smoothing factor.

  • projection (str) – projcode[projparams/]width|scale. Select map projection.

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

  • frame (bool, str, or list) – Set map boundary frame and axes attributes.

  • label_placement (str) – [d|f|n|l|L|x|X]args. Control the placement of labels along the quoted lines. It supports five controlling algorithms. See for details.

  • verbose (bool or 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 algorithms)

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

    • c - Compatibility warnings

    • d - Debugging messages

  • pen (str or list) – [type]pen[+c[l|f]]. type, if present, can be a for annotated contours or c for regular contours [Default]. The pen sets the attributes for the particular line. Default pen for annotated contours is "0.75p,black" and for regular contours "0.25p,black". Normally, all contours are drawn with a fixed color determined by the pen setting. If +cl is appended the colors of the contour lines are taken from the CPT (see levels). If +cf is appended the colors from the CPT file are applied to the contour annotations. Select +c for both effects.

  • panel (bool, int, or list) – [row,col|index]. Select a specific subplot panel. Only allowed when in subplot mode. Use panel=True to advance to the next panel in the selected order. Instead of row,col you may also give a scalar value index which depends on the order you set via autolabel when the subplot was defined. Note: row, col, and index all start at 0.

  • coltypes (str) – [i|o]colinfo. Specify data types of input and/or output columns (time or geographical data). Full documentation is at

  • label (str) – Add a legend entry for the contour being plotted. Normally, the annotated contour is selected for the legend. You can select the regular contour instead, or both of them, by considering the label to be of the format [annotcontlabel][/contlabel]. If either label contains a slash (/) character then use | as the separator for the two labels instead.

  • perspective (list or str) – [x|y|z]azim[/elev[/zlevel]][+wlon0/lat0[/z0]][+vx0/y0]. Select perspective view and set the azimuth and elevation angle of the viewpoint [Default is [180, 90]]. Full documentation is at

  • transparency (float) – Set transparency level, in [0-100] percent range [Default is 0, i.e., opaque]. Only visible when PDF or raster format output is selected. Only the PNG format selection adds a transparency layer in the image (for further processing).


>>> import pygmt
>>> # Load the 15 arc-minutes grid with "gridline" registration in the
>>> # specified region
>>> grid = pygmt.datasets.load_earth_relief(
...     resolution="15m",
...     region=[-92.5, -82.5, -3, 7],
...     registration="gridline",
... )
>>> # Create a new plot with pygmt.Figure()
>>> fig = pygmt.Figure()
>>> # Create the contour plot
>>> fig.grdcontour(
...     # Pass in the grid downloaded above
...     grid=grid,
...     # Set the interval for contour lines at 250 meters
...     levels=250,
...     # Set the interval for annotated contour lines at 1,000 meters
...     annotation=1000,
...     # Add a frame for the plot
...     frame="a",
...     # Set the projection to Mercator for the 10 cm figure
...     projection="M10c",
... )
>>> # Show the plot

Examples using pygmt.Figure.grdcontour

Creating a map with contour lines

Creating a map with contour lines

2. Create a contour map

2. Create a contour map