Announcing PyGMT release v0.16.0!
This minor release features a new Xarray GMT backend to read netCDF, GeoTIFF and other raster files!
Here are the highlights
:
- Implement gmt Xarray BackendEntrypoint to load raster files via GMT
- Remove the dependency of netCDF4
Nice enhancements
:
pygmt.grdclip: Parametersbetweenandreplaceaccept a 2-D sequence (#3883)Figure.coast/pygmt.select/pygmt.grdlandmask: Use long names ("crude"/"low"/"intermediate"/"high"/"full") as argument for theresolutionparameter (#3013)
Read through the changelog for the full list of changes. Installation/upgrade
instructions are at Installing — PyGMT! Note that this version is cross-compatible with GMT 6.4 - 6.5, but it requires Python 3.11+
, NumPy 1.26+, pandas 2.1+, and Xarray 2023.07+ following our support policy for GMT and other package dependencies. Go try it online at try-gmt
.
As usual, please feel free to report any bugs
with the issue template on GitHub. Your feedback is what helps us to improve
! For example, this bug report at issue #3803 helped detect an inconsistency when parsing text strings with numeric values, that was then fixed by @seisman at PR #3804!
Roadmap to future releases
While the team continues to enhance functionality and fix bugs, there are still plenty of features and improvements we’d like to add! Check out the good first issue label on GitHub or the list below for things you can help with!
-
PyGMT Logo
Thanks to the contributions of @sfrooti, we’re super close to having an official PyGMT logo. If you’d like to provide any feedback during this stage of the design process, please leave your comments in issue #1404 or PR #3849. Stay tuned! -
Features/enhancements

- Wrap GMT moduls: clip, coupe, earthtide, fitcircle, movie, polar, and sac
- Implement high-level methods of
Figure.plotandFigure.plot3d(#2797):Figure.scatter(#3602),Figure.choropleth(#2798),Figure.errorbar,Figure.stem,Figure.fill_between - Implement high-level methods of
Figure.basemaporFigure.coast(#2831):Figure.scale_bar,Figure.directionrose,Figure.magneticrose
-
Documentation improvements

Please don’t be shy to reach out on GitHub if you’re interested in contributing
! Also have a look at our Contributors Guide to figure out how you can help and get started
.
Upcoming deprecations
- v0.17.0 (Planned for September 2025)
- Drop support of numpy<=1.26.0, pandas<=2.1.0 and Xarray<=2023.9
- v0.18.0 (Planned for December 2025)
pygmt.Figure: Remove the private_preprocess()method (FutureWarning raised since PyGMT v0.16.0)
- v0.19.0 (Planned for March 2026)
pygmt.grdfill: Deprecate parameterno_datatohole(deprecated since v0.15.0)pygmt.grdfill: Deprecate parametermode, use parametersconstantfill/gridfill/neighborfill/splinefillinstead (deprecated since v0.15.0)
- v1.0.0
- Short form aliases (e.g.
R) will not work if long form aliases (e.g.region) are available (SyntaxWarning raised since PyGMT v0.4.0, see #1316)
- Short form aliases (e.g.
The compatibility matrix for GMT, Python, and the required core package dependencies NumPy, pandas, and Xarray is listed at Minimum Supported Versions — PyGMT, so make sure you keep things up to date!
Conference presentations/workshops/sprints
What conferences would you like to see GMT/PyGMT at next? AGU25? EGU26? Are you interested in helping to organize a workshop? Let us know in the comments below!
P.S. Share the word on Instagram @genericmappingtools
and ResearchGate!