Making your first figure¶
Welcome to PyGMT! Here we’ll cover some of basic concepts, like creating simple figures and naming conventions.
Loading the library¶
All modules and figure generation is accessible from the
pygmt top level
All figure generation in PyGMT is handled by the
Start a new figure by creating an instance of this class:
Add elements to the figure using its methods. For example, let’s start a map with an
automatic frame and ticks around a given longitude and latitude bound, set the
projection to Mercator (
M), and the figure width to 8 inches:
fig.basemap(region=[-90, -70, 0, 20], projection="M8i", frame=True)
Now we can add coastlines using
pygmt.Figure.coast to this map using the
default resolution, line width, and color:
To see the figure, call
You can also set the map region, projection, and frame type directly in other methods
Use the method
pygmt.Figure.savefig to save your figure to a file. The figure
format is inferred from the extension.
Note for experienced GMT users¶
You’ll probably have noticed several things that are different from classic
command-line GMT. Many of these changes reflect the new GMT modern execution mode that
will be part of the future 6.0 release. A few are PyGMT exclusive (like the
The name of method is
pscoast. As a general rule, all
ps*modules had their
psprefix removed. The exceptions are:
psxywhich is now
psxyzwhich is now
psscalewhich is now
The arguments don’t use the GMT 1-letter syntax (R, J, B, etc). We use longer aliases for these arguments and have some Python exclusive names. The mapping between the GMT arguments and their Python counterparts should be straight forward.
regioncan take lists as well as strings like
If a GMT argument has no options (like
-Baf), use a
Truein Python. An empty string would also be acceptable. For repeated arguments, such as
-B+Loleron -Bxaf -By+lm, provide a list:
frame=["+Loleron", "xaf", "y+lm"].
There is no output redirecting to a PostScript file. The figure is generated in the background and will only be shown or saved when you ask for it.
Total running time of the script: ( 0 minutes 1.858 seconds)