Figure.inset(*, position=None, box=None, projection=None, margin=None, no_clip=None, region=None, verbose=None, **kwargs)

Create an inset figure to be placed within a larger figure.

This method sets the position, frame, and margins for a smaller figure inside of the larger figure. Plotting methods that are called within the context manager are added to the inset figure.

Full option list at


  • D = position

  • F = box

  • J = projection

  • M = margin

  • N = no_clip

  • R = region

  • V = verbose

  • position (str or list) –

    xmin/xmax/ymin/ymax[+r][+uunit]] | [g|j|J|n|x]refpoint+wwidth[/height][+jjustify][+odx[/dy]].

    This is the only required parameter. Define the map inset rectangle on the map. Specify the rectangle in one of three ways:

    Append glon/lat for map (user) coordinates, jcode or Jcode for setting the refpoint via a 2-character justification code that refers to the (invisible) projected map bounding box, nxn/yn for normalized (0-1) bounding box coordinates, or xx/y for plot coordinates (inches, centimeters, points, append unit). All but x requires both region and projection to be specified. You can offset the reference point via +odx/dy in the direction implied by code or +jjustify.

    Alternatively, give west/east/south/north of geographic rectangle bounded by parallels and meridians; append +r if the coordinates instead are the lower left and upper right corners of the desired rectangle. (Or, give xmin/xmax/ymin/ymax of bounding rectangle in projected coordinates and optionally append +uunit [Default coordinate unit is meters (e)].

    Append +wwidth[/height] of bounding rectangle or box in plot coordinates (inches, centimeters, etc.). By default, the anchor point on the scale is assumed to be the bottom left corner (BL), but this can be changed by appending +j followed by a 2-character justification code justify. Note: If j is used then justify defaults to the same as refpoint, if J is used then justify defaults to the mirror opposite of refpoint. Specify inset box attributes via the box parameter [Default is outline only].

  • box (str or bool) – [+cclearances][+gfill][+i[[gap/]pen]][+p[pen]][+r[radius]][+s[[dx/dy/][shade]]]. If set to True, draw a rectangular box around the map inset using the default pen; specify a different pen with +ppen. Add +gfill to fill the logo box [Default is no fill]. Append +cclearance where clearance is either gap, xgap/ygap, or lgap/rgap/bgap/tgap where these items are uniform, separate in x- and y-direction, or individual side spacings between logo and border. Append +i to draw a secondary, inner border as well. We use a uniform gap between borders of 2p and the default pen unless other values are specified. Append +r to draw rounded rectangular borders instead, with a 6p corner radius. You can override this radius by appending another value. Append +s to draw an offset background shaded region. Here, dx/dy indicates the shift relative to the foreground frame [Default is "4p/-4p"] and shade sets the fill style to use for shading [Default is "gray50"].

  • margin (int or str or list) – This is clearance that is added around the inside of the inset. Plotting will take place within the inner region only. The margins can be a single value, a pair of values separated (for setting separate horizontal and vertical margins), or the full set of four margins (for setting separate left, right, bottom, and top margins). When passing multiple values, it can be either a list or a string with the values separated by forward slashes [Default is no margins].

  • no_clip (bool) – Do not clip features extruding outside the inset frame boundaries [Default is False].

  • region (str or list) – xmin/xmax/ymin/ymax[+r][+uunit]. Specify the region of interest.

  • projection (str) – projcode[projparams/]width. Select map projection.

  • verbose (bool or str) –

    Select verbosity level [Default is w], which modulates the messages written to stderr. Choose among 7 levels of verbosity:

    • q - Quiet, not even fatal error messages are produced

    • e - Error messages only

    • w - Warnings [Default]

    • t - Timings (report runtimes for time-intensive algorithms)

    • i - Informational messages (same as verbose=True)

    • c - Compatibility warnings

    • d - Debugging messages


>>> import pygmt
>>> # Create the larger figure
>>> fig = pygmt.Figure()
>>> fig.coast(region="MG+r2", water="lightblue", shorelines="thin")
>>> # Use a "with" statement to initialize the inset context manager
>>> # Setting the position to top left and a width of 3.5 centimeters
>>> with fig.inset(position="jTL+w3.5c+o0.2c", margin=0, box="+pgreen"):
...     # Map elements under the "with" statement are plotted in the inset
...     fig.coast(
...         region="g",
...         projection="G47/-20/3.5c",
...         land="gray",
...         water="white",
...         dcw="MG+gred",
...     )
>>> # Map elements outside the "with" block are plotted in the main figure
>>> fig.logo(position="jBR+o0.2c+w3c")

Examples using pygmt.Figure.inset



Inset map showing a rectangular region

Inset map showing a rectangular region

Adding an inset to the figure

Adding an inset to the figure