keywords: GMT, Julia, insets

Manage figure inset setup and completion

The inset module is used to carve out a sub-region of the current plot canvas and restrict further plotting to that section of the canvas. The inset setup is started with the inset(...) directive that defines the placement and size of the inset. Subsequent plot commands will be directed to that window. The inset is completed via the inset(:end) directive, which reverts operations to the full canvas and restores the plot region and map projection that was in effect prior to the setup of the inset.


The inset(...) defines the dimension and placement of the inset canvas. It records the current region and projection so that we may return to the initial plot environment when the inset is completed. The user may select any plot region and projection once plotting in the inset, but if the first command uses a projection that leaves off the scale or width then we supply a scale or width to fill the inset as best as possible, given the inset size and margins (if selected). Note: If you wish to let the inset dimensions be determined by the region and projection that will be used to draw in the inset, then give these arguments in the inset() command.

Required Arguments

  • D or inset or inset_box or insetbox : – inset_box=(map=true, inside=true, outside=true, norm=true, paper=true, anchor=XX, size=XX, width=XX, justify=code, offset=XX)
    Define the map inset rectangle on the map. Specify the rectangle in one of three ways:

    1. Use map=(lon,lat) for map coordinates. Requires both region and proj to be set.

    2. Use inside=code or outside=code for setting the refpoint via a 2-char justification code that refers to the (invisible) projected map bounding box. Requires both region and proj to be set.

    3. Use norm=(x,y) for normalized bounding box coordinates (0-1). Requires both region and proj to be set.

    4. Use paper=(x,y) for plot coordinates (append cm, inch, or point).

    Use size=(length,width) (or width) of bounding rectangle or box in plot coordinates (inches, cm, etc.). By default, the anchor point on the scale is assumed to be the bottom left corner (BL), but this can be changed by using justify=?? where ?? stands for a 2-char justification code justify (see \myreflink{text}). Note: with the default outside=true, the justify defaults to the same as anchor, if inside=true is used then justify defaults to the mirror opposite of anchor. Specify inset box attributes via the box option [outline only].

    Alternatively, use inset_box="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 meter (e)]. NOTE that this form requires passing the options as a string and it uses the terse pure GMT syntax.

Optional Arguments

  • C or clearance : – clearance=val | clearance=(left=val, right=val, bott=val, bottom=val, top=val))
    Reserve a space of dimension clearance between the actual inset plot area and the given inset box on the specified side, using side values from left=val, right=val, bottom=val, or top=val, or lr=val for both left and right or tb=val for both top and bott. No side means all sides. Alternatively, if all sides are to be set you can also give a pair of values separated by slashes (for setting separate horizontal and vertical margins), or the full set of four separate margins. Such space will be left untouched by the inset map plotting. Append units as desired (cm, inch, or point) [Default is set by PROJ_LENGTH_UNIT].

  • F or box : – box=(clearance=val, fill=color, inner=true, pen=pen, rounded=true, shaded=XX)
    Without further options, draws a rectangular border around the map inset using MAP_FRAME_PEN. The following modifiers can be appended to |-F|, with additional explanation and examples provided in the The background panel cookbook section:

    • clearance=val where val is either gap or (xgap,ygap), or (lgap,rgap,bgap,tgap) where these items are uniform, separate in x- and y-direction, or individual side spacings between the map embellishment and the border for each side.

    • fill=color, where color is any valid color setting (see Setting color, to fill the scale panel [no fill].

    • inner=true to draw a secondary, inner border as well. We use a uniform gap between borders of 2p and the MAP_DEFAULTS_PEN unless other values are specified (like inner="gap/pen").

    • rounded=true to draw rounded rectangular borders instead, with a 6p corner radius. You can override this radius by using another value instead of true.

    • shadded=true or shadded=(dx,dy) or shadded=shade to draw an offset background shaded region. Here, dx/dy indicates the shift relative to the foreground frame [4p/-4p]and shade sets the fill style to use for shading ("gray50").

  • J or proj or projection : – proj=<parameters>
    Select map projection. More at proj

  • N or noclip or no_clip : noclip=true
    Do not clip features extruding outside map inset boundaries [Default will clip].

  • R or region or limits : – limits=(xmin, xmax, ymin, ymax) | limits=(BB=(xmin, xmax, ymin, ymax),) | limits=(LLUR=(xmin, xmax, ymin, ymax),units="unit") | ...more
    Specify the region of interest. More at limits. For perspective view view, optionally add zmin,zmax. This option may be used to indicate the range used for the 3-D axes. You may ask for a larger w/e/s/n region to have more room between the image and the axes.

  • V or verbose : – verbose=true | verbose=level
    Select verbosity level. More at verbose

Synopsis (end mode)

The inset(:end) command finalizes the current inset, which returns the plotting environment to the state prior to the start of the inset. The previous region and map projection will be in effect going forward.


To make a simple basemap plot that demonstrates the inset module, try

using GMT
	basemap(region=(0,40,20,60), proj=:merc, frame=(annot=:afg, fill=:lightgreen))
	inset(inset_box=(anchor=:TR, width=6.4, offset=0.5), box=(fill=:pink, pen=0.5), margins=0.6)
		basemap(region=:global360, proj=(name=:laea, center=[20,20]), figsize=5, frame=:afg)
		text(text="INSET", font=18, region_justify=:TR, offset=(away=true, shift=-0.4), noclip=true)
	text(text="MAP", font=18, region_justify=:BL, offset=(away=true, shift=0.5))