PyGMT v0.18.0 released
The PyGMT team is starting into 2026 with announcing PyGMT release v0.18.0 ![]()
! This minor release features a Pythonic Position class for enhanced GMT embellishment placement
.
Here are the highlights
:
Eighteenth minor release of PyGMT 
- Enhanced GMT embellishment (e.g., scale bar, GMT logo, image) placement and styling with a Pythonic
Positionclass and additional controlling parameters - Five new or updated gallery examples (#4231, #4229, #4228, #4265, #4214)
Nice enhancements
:
- AliasSystem: Migrate the
registrationparameter to the new alias system and support descriptive arguments (#4182) pygmt.grdfilter: Let the parameternanssupport descriptive arguments (#4310)Figure.colorbar: Addposition/length/widthand more parameters to specify colorbar position and properties (#4048)Figure.grdview: Improve parametersplane/facade_fill/facade_pento set the plane and facade (#4235)Figure.histogram: Split parameterbar_widthintobar_widthandbar_offset(#4316)Figure.inset: Add parametersposition/width/heightto specify inset position and dimensions (#4047)Figure.image: Add aliases for -I (invert) and -B (frame) (#4089, #4301)Figure.image: Add parametersposition/width/height/dpi/replicateto control image position and properties (#4045)Figure.legend: Add aliases for -S (scale) and -B (frame) (#4254)Figure.legend: Add parametersposition/width/height/line_spacingto specify legend position and properties (#4046)Figure.logo: Add parametersposition/width/heightto specify logo position and dimensions (#4014)Figure.wiggle: Add parametersposition/length/label/label_alignmentfor the scalebar position and properties (#4049)
Read through the changelog for the full list of changes. Installation/upgrade
instructions are at Installing — PyGMT! This version is compatible with GMT 6.5.0 - 6.6.0, and now requires Python 3.12+
, NumPy 2.0+, pandas 2.2+, and Xarray 2024.5+ 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 issue #3041 and various forum posts like this helped us to realize that GMT’s font size autoscaling for colorbars (introduced in GMT 6.5.0) was potentially confusing, and led us to document a workaround in PR #4126!
Additions and updates to Gallery examples
Roadmap to future releases
While the team started to work on a new alias system and continues to enhance functionality, 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 modules: 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(#4015),Figure.directional_rose(#4025),Figure.magnetic_rose(#4051)
- Documentation improvements
Please don’t be shy to reach out on GitHub if you’re interested in contributing
! You can have a look at our Contributors Guide to figure out how you can help and get started
.
Upcoming deprecations
- v0.19.0 (Planned for March 2026)
pygmt.grdfill: Deprecate parameterno_datatohole(since v0.15.0)pygmt.grdfill: Deprecate parametermode, use parametersconstantfill/gridfill/neighborfill/splinefillinstead (since v0.15.0)pygmt.grdclip: Deprecate parameternewtoreplace(since v0.15.0)utils.sequence_join: Deprecate parameterseparatortosep(since v0.17.0)
- v0.20.0 (Planned for June 2026) (Sorry, but in a long term aproach this will make the names more consistent and intuitive, and they will align with with the PEP 8 style guide)
pygmt.grdfill: Deprecate parametersconstantfill/gridfill/neighborfill/splinefilltoconstant_fill/grid_fill/neighbor_fill/spline_fill(since v0.18.0)pygmt.grdlandmask: Deprecate parametersbordervalues/maskvaluestobroder_values/mask_values(since v0.18.0)Figure.grdview: Deprecate parameterscontourpen/facadepen/meshpentocontour_pen/facade_pen/mesh_pen(since v0.18.0)Figure.grdview: Deprecate parameterdrapegridtodrape_grid(since v0.18.0)Figure.histogram: Deprecate parameterbarwidthtobar_width(since v0.18.0)Figure.inset: Deprecate parametermargintoclearance(since v0.18.0)Figure.meca: Deprecate parameterscompressionfill/extensionfilltocompression_fill/extension_fill(since v0.18.0)Figure.meca: Deprecate parameterlabelboxtolabel_box(since v0.18.0)pygmt.select: Deprecate parametergridmasktomask_grid(since v0.18.0)pygmt.select: Deprecate parametermasktomask_values(since v0.18.0)pygmt.surface: Deprecate parametermaxradiustomax_radius(since v0.18.0)Figure.velo: Deprecate parametersuncertaintyfilltouncertainty_fill(since v0.18.0)Figure.wiggle: Deprecate parametersfillnegative/fillpositivetonegative_fill/positive_fill(since v0.18.0)pygmt.x2sys_cross: Deprecate parametertrackvaluestotrack_values(since v0.18.0)- Remove deprecated
pygmt.io.load_dataarray(since v0.16.0) Session.virtualfile_in: Remove deprecated parametersrequired_z/extra_arrays/required_data(since v0.16.0)
- v0.21.0
pygmt.grdsample: Deprecate parametertranslatetotoggle(since v0.18.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? IGARSS? FOSS4G? 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!




