.. _-B_full:

**-B**\ [**p**\|\ **s**]\ *parameters*
    Set map Frame and Axes parameters. The Frame parameters are specified by

    **-B**\ [*axes*][**+b**][**+g**\ *fill*][**+i**\ [*val*]][**+n**][**+o**\ *lon/lat*][**+t**\ *title*]

    where *axes* selects which axes to plot. By default, all 4 map boundaries
    (or plot axes) are plotted (named **W**, **E**, **S**, **N**). To customize,
    append the codes for those you want (e.g., **WSn**). Upper case means plot
    and annotate while lower case just plots and ticks the specified axes.
    To *just* draw an axis without annotation and ticks you can use the **l**\ (eft),
    **r**\ (ight), **b**\ (ottom), **t**\ (opt) and (for 3-D) **u**\ (p) codes. If a 3-D basemap
    is selected with **-p** and **-Jz**, append **Z**, **z**, or **u** to control the
    appearance of the vertical axis. By default a single vertical axes will be
    plotted at the most suitable map corner. Override the default by appending
    any combination of corner ids **1234**, where **1** represents the lower left
    corner and the order goes counter-clockwise. Append **+b** to draw the outline of the 3-D
    cube defined by **-R**; this modifier is also needed to display gridlines in
    the x-z, y-z planes. Note that for 3-D views the title, if given, will be
    suppressed. You can paint the interior of the canvas with **+g**\ *fill*.
    Use **+i** to annotate an internal meridian or parallel when the axis that normally
    would be drawn and annotated does not exist (e.g., azimuthal map with 360-degree range
    has no latitude axis, and a global Hammer map has no longitude axis); optionally append the parallel or meridian [0].
    Append **+n** to have no frame and annotations at all [Default is controlled by the codes].
    Optionally append **+o**\ *plon/plat* to draw oblique gridlines about
    specified pole [regular gridlines]. Ignored if gridlines are not
    requested (below) and disallowed for the oblique Mercator projection.
    To add a plot title, append **+t**\ *title*. The Frame setting is optional but
    can be invoked once to override the above defaults.

    The Axes parameters are specified by

    **-B**\ [**p**\|\ **s**][**x**\|\ **y**\|\ **z**]\ *intervals*\ [**+a**\ *angle*\|\ **n**\|\ **p**][**+f**][**+l**\|\ **L**\ *label*][**+p**\ *prefix*][**+s**\|\ **S**\ *seclabel*][**+u**\ *unit*]

    but you may also split this into two separate invocations for clarity, i.e.,

-   **-B**\ [**p**\|\ **s**][**x**\|\ **y**\|\ **z**][**+a**\ *angle*\|\ **n**\|\ **p**][**+f**][**+l**\|\ **L**\ *label*][**+p**\ *prefix*][**+s**\|\ **S**\ *seclabel*][**+u**\ *unit*]
-   **-B**\ [**p**\|\ **s**][**x**\|\ **y**\|\ **z**]\ *intervals*

    The first optional flag following **-B** selects **p** (rimary) [Default] or
    **s** (econdary) axes information (mostly used for time axes annotations but
    available for geographic axes as well. **Note**: primary refers to annotations
    closest to the axis and secondary to annotations further away.  Hence, primary
    annotation-, tick-, and gridline-intervals must be shorter than their secondary counterparts).
    The [**x**\|\ **y**\|\ **z**] flags specify which axes you are providing information for.
    If none are given then we default to **xy**.  If you wish to give different annotation intervals
    or labels for the various axes then you must repeat the **B** option for
    each axis (If a 3-D basemap is selected with **-p** and **-Jz**, use **-Bz**
    to give settings for the vertical axis.).  To add a label to an axis,
    just append **+l**\ *label* (Cartesian projections only). Use **+L** (or **+S**) to
    force a horizontal label for *y*-axes (useful for very short labels).
    For Cartesian axes you may specify an alternate via **+s** which is used for
    right or upper axis axis label (with any **+l** label used for left and bottom axes).
    If the axis annotation should have a leading text prefix (e.g., dollar sign for those
    plots of your net worth) you can append **+p**\ *prefix*. For geographic maps
    the addition of degree symbols, etc. is automatic (and controlled by the GMT
    default setting :term:`FORMAT_GEO_MAP`). However, for other plots you can add
    specific units by adding **+u**\ *unit*.  If any of these text strings contain
    spaces or special characters you will need to enclose them in quotes.
    Cartesian x-axes also allow for the optional **+a**\ *angle*, which
    will plot slanted annotations; *angle* is measured with respect to the horizontal
    and must be in the -90 <= *angle* <= 90 range only.  Also, **+an** is a shorthand
    for normal (i.e., **+a**\ 90) and **+ap** for parallel (i.e., **+a**\ 0) annotations
    [Default].  For the y-axis, arbitrary angles are not allowed but **+an** and **+ap**
    specify annotations normal [Default] and parallel to the axis, respectively.  Note that
    these defaults can be changed via :term:`MAP_ANNOT_ORTHO`. Geographic axes can
    take **+f** which will give fancy annotations with W|E|S|N suffices encoding the sign.

    The *intervals* specification is a concatenated string made up of substrings
    of the form

    [**a**\|\ **f**\|\ **g**]\ *stride*\ [*±phase*][*unit*].

    The leading **a** is used to specify the annotation and major tick
    spacing [Default], **f** for minor tick spacing, and **g** for
    gridline spacing. *stride* is the desired stride interval. The
    optional *phase* shifts the annotation interval by that amount
    (positive or negative). The optional *unit* indicates the unit of
    the *stride* and are particularly important for time-axes as they
    can be any of the ones listed below:

    - **Y** (year, plot with 4 digits)
    - **y** (year, plot with 2 digits)
    - **O** (month, plot using :term:`FORMAT_DATE_MAP`)
    - **o** (month, plot with 2 digits)
    - **U** (ISO week, plot using :term:`FORMAT_DATE_MAP`)
    - **u** (ISO week, plot using 2 digits)
    - **r** (Gregorian week, 7-day stride from start of week :term:`TIME_WEEK_START`)
    - **K** (ISO weekday, plot name of weekdays in selected language)
    - **k** (weekday, plot number of day in the week (1–7) (see :term:`TIME_WEEK_START`))
    - **D** (date, plot using :term:`FORMAT_DATE_MAP`)
    - **d** (day, plot day of month 0-31 or year 1-366, via :term:`FORMAT_DATE_MAP`)
    - **R** (day, same as **d**, aligned with :term:`TIME_WEEK_START`)
    - **H** (hour, plot using :term:`FORMAT_CLOCK_MAP`)
    - **h** (hour, plot with 2 digits)
    - **M** (minute, plot using :term:`FORMAT_CLOCK_MAP`)
    - **m** (minute, plot with 2 digits)
    - **S** (second, plot using :term:`FORMAT_CLOCK_MAP`)
    - **s** (second, plot with 2 digits).

    For geographic axes **d**, **m** and **s** instead mean arc degrees, minutes and seconds,
    while for Cartesian axes no unit is given.
    All entities that are language-specific are under control
    of :term:`GMT_LANGUAGE`. Alternatively, we can omit *stride*, thus setting
    *xinfo*, *yinfo*, or *zinfo* to **a** plots annotations at automatically determined intervals,

    - **ag** plots both annotations and grid lines with the same spacing,
    - **afg** adds suitable minor tick intervals,
    - **g** plots grid lines with the same interval as if **-Bf** was used.

    For custom annotations and intervals, let *intervals* be given as
    **c**\ *intfile*, where *intfile* contains any number of
    records with *coord* *type* [*label*]. Here, *type* is one or more
    letters from **a**\|\ **i**, **f**, and **g**. For
    **a**\|\ **i** you must supply a *label* that will be plotted at
    the *coord* location. |br|
    For non-geographical projections: Give negative scale (in **-Jx**)
    or axis length (in **-JX**) to change the direction of increasing
    coordinates (i.e., to make the y-axis positive down). |br|
    For log10 axes: Annotations can be specified in one of three ways:

    1. *stride* can be 1, 2, 3, or -*n*. Annotations will then occur at 1,
       1-2-5, or 1-2-3-4-...-9, respectively; for -*n* we annotate every
       *n*\ 't magnitude. This option can also be used for the frame and
       grid intervals.

    2. An **l** is appended to the *tickinfo* string. Then, log10 of the
       tick value is plotted at every integer log10 value.

    3. A **p** is appended to the *tickinfo* string. Then,
       annotations appear as 10 raised to log10 of the tick value.

    For power axes: Annotations can be specified in one of two ways:

    1. *stride* sets the regular annotation interval.

    2. A **p** is appended to the *tickinfo* string. Then, the annotation interval is
       expected to be in transformed units, but the annotation value will
       be plotted as untransformed units. E.g., if *stride* = 1 and *power*
       = 0.5 (i.e., sqrt), then equidistant annotations labeled 1-4-9...  will appear.

    Finally, if your axis is in radians you can use multiples or fractions of **pi** to
    set such annotation intervals.  The format is [*s*]\ **pi**\ [*f*], for an optional
    integer scale *s* and optional integer fraction *f*.

    These GMT parameters can affect the appearance of the map boundary:
    :term:`MAP_ANNOT_MIN_ANGLE`, :term:`MAP_ANNOT_MIN_SPACING`,
    :term:`FONT_ANNOT_PRIMARY`, :term:`FONT_ANNOT_SECONDARY`,
    :term:`MAP_ANNOT_OFFSET_PRIMARY`,
    :term:`MAP_ANNOT_OFFSET_SECONDARY`,
    :term:`MAP_ANNOT_ORTHO`, :term:`MAP_FRAME_AXES`, :term:`MAP_DEFAULT_PEN`,
    :term:`MAP_FRAME_TYPE`, :term:`FORMAT_GEO_MAP`, :term:`MAP_FRAME_PEN`,
    :term:`MAP_FRAME_WIDTH`, :term:`MAP_GRID_CROSS_SIZE_PRIMARY`,
    :term:`MAP_GRID_PEN_PRIMARY`, :term:`MAP_GRID_CROSS_SIZE_SECONDARY`,
    :term:`MAP_GRID_PEN_SECONDARY`, :term:`FONT_TITLE`, :term:`FONT_LABEL`,
    :term:`MAP_LINE_STEP`, :term:`MAP_ANNOT_OBLIQUE`,
    :term:`FORMAT_CLOCK_MAP`, :term:`FORMAT_DATE_MAP`,
    :term:`FORMAT_TIME_PRIMARY_MAP`, :term:`FORMAT_TIME_SECONDARY_MAP`,
    :term:`GMT_LANGUAGE`, :term:`TIME_WEEK_START`,
    :term:`MAP_TICK_LENGTH_PRIMARY`,
    and :term:`MAP_TICK_PEN_PRIMARY`; see the :doc:`gmt.conf` man page for details.
