PyGMT v0.16.0 released

Announcing PyGMT release v0.16.0! :tada:This minor release features a new Xarray GMT backend to read netCDF, GeoTIFF and other raster files!

Here are the highlights :tada::

Nice enhancements :sparkles::

  • pygmt.grdclip: Parameters between and replace accept a 2-D sequence (#3883)
  • Figure.coast / pygmt.select / pygmt.grdlandmask: Use long names ("crude"/"low"/"intermediate"/"high"/"full") as argument for the resolution parameter (#3013)

Read through the changelog for the full list of changes. Installation/upgrade :arrow_up: instructions are at Installing — PyGMT! Note that this version is cross-compatible with GMT 6.4 - 6.5, but it requires Python 3.11+ :snake:, 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 :rocket:.

As usual, please feel free to report any bugs :beetle: with the issue template on GitHub. Your feedback is what helps us to improve :folded_hands:! 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!

:railway_track: 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 :sparkles:

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

    • Add a beginner :beginner: friendly PyGMT tutorial that is a good roadmap for new GMT/PyGMT users (#770)
    • Add a tutorial explaining the generally accepted input types (#1268)

Please don’t be shy to reach out on GitHub if you’re interested in contributing :smile:! Also have a look at our Contributors Guide to figure out how you can help and get started :rocket:.

:warning: 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 parameter no_data to hole (deprecated since v0.15.0)
    • pygmt.grdfill: Deprecate parameter mode, use parameters constantfill/gridfill/neighborfill/splinefill instead (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)

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!

:world_map: 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 :camera_with_flash: and ResearchGate!

2 Likes