Making your first figure

Welcome to PyGMT! Here we’ll cover some of basic concepts, like creating simple figures and naming conventions.

Note

This tutorial assumes the use of a Python notebook, such as IPython or JupyterLab. To see the figures while using a Python script instead, use fig.show(method="external") to display the figure in the default PDF viewer.

To save the figure, use fig.savefig("figname.pdf") where "figname.pdf" is the desired name and file extension for the saved figure.

Loading the library

All modules and figure generation is accessible from the pygmt top level package:

import pygmt
Copy to clipboard

Creating figures

All figure generation in PyGMT is handled by the pygmt.Figure class. Start a new figure by creating an instance of this class:

Add elements to the figure using its methods. For example, let’s use pygmt.Figure.basemap to start the creation of a map. We’ll use the region parameter to provide the longitude and latitude bounds, the projection parameter to set the projection to Mercator (M) and the map width to 15 cm, and the frame parameter to generate a frame with automatic tick and annotation spacings.

fig.basemap(region=[-90, -70, 0, 20], projection="M15c", frame=True)
Copy to clipboard

Now we can add coastlines using pygmt.Figure.coast to this map using the default resolution, line width, and color:

fig.coast(shorelines=True)
Copy to clipboard

To see the figure, call pygmt.Figure.show:

first figure

Out:

<IPython.core.display.Image object>
Copy to clipboard

You can also set the map region, projection, and frame type directly in other methods without calling gmt.Figure.basemap:

fig = pygmt.Figure()
fig.coast(shorelines=True, region=[-90, -70, 0, 20], projection="M15c", frame=True)
fig.show()
Copy to clipboard
first figure

Out:

<IPython.core.display.Image object>
Copy to clipboard

Saving figures

Use the method pygmt.Figure.savefig to save your figure to a file. The figure format is inferred from the extension.

fig.savefig("central-america-shorelines.png")
Copy to clipboard

Note for experienced GMT users

You have probably noticed several things that are different from classic command-line GMT. Many of these changes reflect the new GMT modern execution mode that is part of GMT 6.

  1. As a general rule, the ps prefix has been removed from all ps* modules (PyGMT methods). For example, the name of the GMT 5 module pscoast is coast in GMT 6 and PyGMT. The exceptions are: psxy which is now plot, psxyz which is now plot3d, and psscale which is now colorbar.

  2. More details can be found in the GMT cookbook introduction to modern mode.

A few are PyGMT exclusive (like the savefig method).

  1. The PyGMT parameters (called options or arguments in GMT) don’t use the GMT 1-letter syntax (R, J, B, etc). We use longer aliases for these parameters and have some Python exclusive names. The mapping between the GMT parameters and their PyGMT aliases should be straightforward. For some modules, these aliases are still being developed.

  2. Parameters like region can take lists as well as strings like 1/2/3/4.

  3. If a GMT option has no arguments (like -B instead of -Baf), use a True in Python. An empty string would also be acceptable. For repeated parameters, such as -B+Loleron -Bxaf -By+lm, provide a list: frame=["+Loleron", "xaf", "y+lm"].

  4. 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 2.858 seconds)

Gallery generated by Sphinx-Gallery