Note
Click here to download the full example code
Configuring PyGMT defaults
Default GMT parameters can be set globally or locally using
pygmt.config.
import pygmt
Configuring default GMT parameters
Users can override default parameters either temporarily (locally) or
permanently (globally) using pygmt.config. The full list of default
parameters that can be changed can be found at https://docs.generic-mapping-tools.org/latest/gmt.conf.html.
We demonstrate the usage of pygmt.config by configuring a map plot.
# Start with a basic figure with the default style
fig = pygmt.Figure()
fig.basemap(region=[115, 119.5, 4, 7.5], projection="M10c", frame=True)
fig.coast(land="black", water="skyblue")
fig.show()

Out:
<IPython.core.display.Image object>
Globally overriding defaults
The MAP_FRAME_TYPE parameter specifies the style of map frame to use, of
which there are 5 options: fancy (default, seen above), fancy+,
plain, graph (which does not apply to geographical maps) and
inside.
The FORMAT_GEO_MAP parameter controls the format of geographical tick
annotations. The default uses degrees and minutes. Here we specify the ticks
to be a decimal number of degrees.
fig = pygmt.Figure()
# Configuration for the 'current figure'.
pygmt.config(MAP_FRAME_TYPE="plain")
pygmt.config(FORMAT_GEO_MAP="ddd.xx")
fig.basemap(region=[115, 119.5, 4, 7.5], projection="M10c", frame=True)
fig.coast(land="black", water="skyblue")
fig.show()

Out:
<IPython.core.display.Image object>
Locally overriding defaults
It is also possible to temporarily override the default parameters, which is
very useful for limiting the scope of changes to a particular plot.
pygmt.config is implemented as a context manager, which handles the
setup and teardown of a GMT session. Python users are likely familiar with
the with open(...) as file: snippet, which returns a file context
manager. In this way, it can be used to override a parameter for a single
command, or a sequence of commands. An application of pygmt.config
as a context manager is shown below:
fig = pygmt.Figure()
# This will have a fancy+ frame
with pygmt.config(MAP_FRAME_TYPE="fancy+"):
fig.basemap(region=[115, 119.5, 4, 7.5], projection="M10c", frame=True)
fig.coast(land="black", water="skyblue")
# Shift plot origin down by 10cm to plot another map
fig.shift_origin(yshift="-10c")
# This figure retains the default "fancy" frame
fig.basemap(region=[115, 119.5, 4, 7.5], projection="M10c", frame=True)
fig.coast(land="black", water="skyblue")
fig.show()

Out:
<IPython.core.display.Image object>
Total running time of the script: ( 0 minutes 4.435 seconds)