PyGMT v0.4.0 released

Announcing PyGMT v0.4.0, covering 10 new PyGMT functions and methods!

The PyGMT team is pleased to present version v0.4.0, a release with 6 new gallery examples, 2 new tutorials, an improved contributors guide, numerous bug fixes, and much more! The highlights for this release include:

  • Added tutorials for plotting datetime data (#1193) and vectors (#1070)
  • Support tab auto-completion in Jupyter (#1282)
  • Minimum required GMT version is now 6.2.0 or newer (#1321)

The full list of changes can be found in the changelog. Installation/Upgrade instructions can be found at, or you can try it online first at try-gmt! A big shout out to @noorbuchi, @cklima616, @munzekm, and @Nathandloria from Allegheny College for making two cool tutorials for plotting datetime data and vectors. Cheers to @eemcmullan for adding examples for the three oblique mercator projections (1, 2, and 3). Thank you also to @itsabhianant, @MichaeINeumann, @xdshivani, @alperen-kilic, @Lawqup, @mdtanker, @shahid-0, and @vitorgt for some improvements and quick fixes to our documentation; we appreciate all contributions be it big or small and welcome new contributors to PyGMT :smile:!

Gallery in PyGMT v0.4.0

:sparkles: New Features

One thing we sneaked in is support for plotting :globe_with_meridians: geopandas Data Structures (e.g. a geopandas.GeoDataFrame) directly with PyGMT, though this is not well documented yet (but see #608). Other than that, there are plenty of new functions this time around such as:

All of this won’t be possible without our great crew of PyGMT developers :man_technologist::woman_technologist: - @seisman, @weiji14, @michaelgrund, @meghanj, @willschlitzer, and @core-man. Also a big thank you to @pwessel and the core GMT team for fixing bugs :bug: and pushing out the GMT 6.2.0 release!

:railway_track: Roadmap to v0.5.0

For the next minor release, here are some things we have planned (many of which we need help with!):

  • :globe_with_meridians: + :snake: Design a fresh new PyGMT logo!
  • Integration with ObsPy :snake: to process seismological data (#967)
  • Add a beginner :beginner: friendly PyGMT tutorial that is a good roadmap for new GMT/PyGMT users (#770)
  • More features/enhancements :sparkles::
    • Allow passing in a list/array of angle/font/justify values to text (#483)
    • Wrap more GMT modules, e.g., xyz2grd (#636) and triangulate (#731)
    • Add Figure.hlines() and Figure.vlines() for plotting horizontal and vertical lines (#670)

:warning: Upcoming deprecations

No one likes software that breaks. To ensure a bug-free product and consistency, these are some of the deprecations coming up for future releases of PyGMT:

  • v0.5.0 - NEP29: drop support for NumPy 1.17 so that NumPy 1.18 or above is required
  • v0.6.0 - Aliases “columns” and “sizes” are replaced by “incols” and “size” respectively (a FutureWarning is raised in PyGMT v0.4.0)
  • v1.0.0 (?) - Short form aliases (e.g. ‘R’) will not work if long form aliases (e.g. ‘region’) are available (a SyntaxWarning is raised in PyGMT v0.4.0, see #1316)

The compatibility matrix will be listed on, so make sure you keep things up to date!

:world_map: Community events

We’re doing a few outreach events in the second half of the year, and welcome people to take part!

If you have time, feel free to reach out to the PyGMT team during those events! We have quarterly PyGMT community meetings (see the last one in mid June 2021), and are active on this forum and GitHub too. That’s all for now :smile:

Enjoy :partying_face:

P.S. Feel free to share the word on twitter :bird:, #PyGMT @gmt_dev!