Package: pygmt
A Python interface for the Generic Mapping ToolsDocumentation (development version)|Contact|Try OnlineWhy PyGMT?A beautiful map is worth a thousand words.
To truly understand how powerful PyGMT is, play with it online onBinder!
For a quicker introduction, check out our3 minute overview!Afterwards, feel free to look at ourTutorials,
visit theGallery, and check out
someexternal PyGMT examples!AboutPyGMT is a library for processing geospatial and geophysical data and making
publication-quality maps and figures. It provides a Pythonic interface for theGeneric Mapping Tools (GMT), a
command-line program widely used across the Earth, Ocean, and Planetary sciences
and beyond.Project goalsMake 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 thePyDataecosystem:numpy.ndarrayorpandas.DataFramefor data tables,xarray.DataArrayfor grids andgeopandas.GeoDataFramefor geographical data.QuickstartInstallationSimple installation usingmamba:mamba install --channel conda-forge pygmtIf you useconda:conda install --channel conda-forge pygmtFor other ways to installpygmt, see thefull installation instructions.Getting startedAs a starting point, you can open aPython interpreteror aJupyter notebook, and try the following example:import pygmt
fig = pygmt.Figure()
fig.coast(projection="H10c", region="g", frame=True, land="gray")
fig.show()For more examples, please have a look at theGalleryandTutorials.Contacting UsMost discussion happenson GitHub. Feel free toopen an issueor comment on any
open issue or pull request.We have aDiscourse forumwhere you can ask
questions and leave comments.ContributingCode of conductPlease note that this project is released with aContributor Code of Conduct.
By participating in this project you agree to abide by its terms.Contributing GuidelinesPlease read ourContributing Guideto
see how you can help and give feedback.Imposter syndrome disclaimerWe want your help.No, really.There may be a little voice inside your head that is telling you that you’re not ready
to be an open source contributor; that your skills aren’t nearly good enough to
contribute. What could you possibly offer?We assure you that the little voice in your head is wrong.Being a contributor doesn’t just mean writing code.
Equally important contributions include: writing or proof-reading documentation,
suggesting or implementing tests, or even giving feedback about the project (including
giving feedback about the contribution process). If you’re coming to the project with
fresh eyes, you might see the errors and assumptions that seasoned contributors have
glossed over. If you can write any code at all, you can contribute code to open source.
We are constantly trying out new skills, making mistakes, and learning from those
mistakes. That’s how we all improve and we are happy to help others learn.This disclaimer was adapted from theMetPy project.Citing PyGMTPyGMT is a community developed project. See theAUTHORS.mdfile on GitHub for a list of the people involved and a definition of the term “PyGMT
Developers”. Feel free to cite our work in your research using the following BibTeX:@software{pygmt_2024_10578540,
  author       = {Tian, Dongdong and
                  Uieda, Leonardo and
                  Leong, Wei Ji and
                  Schlitzer, William and
                  Fröhlich, Yvonne and
                  Grund, Michael and
                  Jones, Max and
                  Toney, Liam and
                  Yao, Jiayuan and
                  Magen, Yohai and
                  Tong, Jing-Hui and
                  Materna, Kathryn and
                  Belem, Andre and
                  Newton, Tyler and
                  Anant, Abhishek and
                  Ziebarth, Malte and
                  Quinn, Jamie and
                  Wessel, Paul},
  title        = {{PyGMT: A Python interface for the Generic Mapping Tools}},
  month        = feb,
  year         = 2024,
  publisher    = {Zenodo},
  version      = {0.11.0},
  doi          = {10.5281/zenodo.10578540},
  url          = {https://doi.org/10.5281/zenodo.10578540}
}To cite a specific version of PyGMT, go to our Zenodo page athttps://doi.org/10.5281/zenodo.3781524and use the “Export to BibTeX” function there.
It is also strongly recommended to cite theGMT 6 paper(which PyGMT wraps around).
Note that some modules likedimfilter,surface, andx2sysalso have their
dedicated citations. Further information for all these can be found athttps://www.generic-mapping-tools.org/cite.LicensePyGMT is free software: you can redistribute it and/or modify it under the terms of
theBSD 3-clause License. A copy of this license is provided inLICENSE.txt.SupportThe development of PyGMT has been supported by NSF grantsOCE-1558403andEAR-1948603.Related projectsOther official wrappers for GMT:GMT.jl: A Julia wrapper for GMT.gmtmex: A Matlab/Octave wrapper
for GMT.Other non-official Python wrappers for GMT (not maintained):gmtpybySebastian HeimannpygmtbyIan RosePyGMTbyMagnus HagdornMinimum Supported GMT/Python/NumPy VersionsPyGMT has adoptedNEP29alongside the rest of the Scientific Python ecosystem, and therefore supports:All minor versions of Python released 42 months prior to the project, and at minimum
the two latest minor versions.All minor versions of NumPy released in the 24 months prior to the project, and at
minimum the last three minor versions.For the supported GMT versions as well as the minimum required Python and NumPy versions
please seeMinimum Required Versions.