A Python interface for the Generic Mapping Tools.

Why PyGMT?

A beautiful map is worth a thousand words. To truly understand how powerful PyGMT is, play with it online on Binder! But if you need some convincing first, watch this 1 hour introduction to PyGMT!

Afterwards, feel free to look at our Tutorials or visit the PyGMT Gallery.


This package is still undergoing rapid development.

All of the API (functions/classes/interfaces) is subject to change until we reach v1.0.0 as per the semantic versioning specification. There may be non-backward compatible changes as we experiment with new design ideas and implement new features. This is not a finished product, use with caution.

We welcome any feedback and ideas! Let us know by submitting issues on GitHub or by posting on our Discourse forum.


PyGMT is a library for processing geospatial and geophysical data and making publication quality maps and figures. It provides a Pythonic interface for the Generic Mapping Tools (GMT), a command-line program widely used in the Earth Sciences.

We rely heavily on new features that have been implemented in GMT 6.0. In particular, a new modern execution mode that greatly simplifies figure creation. These features are not available in the 5.4 version of GMT.

Project goals

  • Make GMT more accessible to new users.
  • Build a Pythonic API for GMT.
  • Interface with the GMT C API directly using ctypes (no system calls).
  • Support for rich display in the Jupyter notebook.
  • Integration with the PyData ecosystem: numpy.ndarray or pandas.DataFrame for data tables and xarray.DataArray for grids.