# grdvector¶

Plot vector field from two component grids

## Synopsis¶

**gmt grdvector** *compx.nc* *compy.nc* **-J***parameters* [ **-A** ]
[ **-B**[**p**|**s**]*parameters* ]
[ **-C***cpt* ]
[ **-G***fill* ]
[ **-I**[**x**]*dx*[/*dy*] ]
[ **-N** ] [ **-Q***parameters* ]
[ **-R***region* ]
[ **-S**[**i**|**l**]*scale*[*unit*] ]
[ **-T** ]
[ **-U**[*stamp*] ]
[ **-W***pen* ]
[ **-X**[**a**|**c**|**f**|**r**][*xshift*[**u**]] ]
[ **-Y**[**a**|**c**|**f**|**r**][*yshift*[**u**]] ]
[ **-Z** ]
[ **-f**flags ]
[ **-p**flags ]
[ **-t**transp ]
[ **--PAR**=*value* ]

**Note:** No space is allowed between the option flag and the associated arguments.

## Description¶

**grdvector** reads two 2-D grid files which represents the *x*- and
*y*-components of a vector field and produces a vector field plot by
drawing vectors with orientation and length according to the information
in the files. Alternatively, polar coordinate *r*, *theta* grids may be given
instead.

## Required Arguments¶

*compx.nc*- Contains the x-components of the vector field.
*compy.nc*- Contains the y-components of the vector field. (See GRID FILE FORMATS below.)

**-J***parameters*(more …)- Select map projection.

## Optional Arguments¶

**-A**- The grid files contain polar (r, theta) components instead of Cartesian (x, y) [Default is Cartesian components].

**-B**[**p**|**s**]*parameters*(more …)- Set map boundary frame and axes attributes.

**-C**[*cpt*|*master*[**+i***zinc*] |*color1,color2*[,*color3*,…]]- Use
*cpt*to assign colors based on vector length. Alternatively, supply the name of a GMT color master dynamic CPT [turbo] to automatically determine a continuous CPT from the grid’s z-range; you may round up/down the z-range by adding**+i***zinc*.. Yet another option is to specify**-C***color1,color2*[,*color3*,…] to build a linear continuous cpt from those colors automatically. In this case*color***n**can be a r/g/b triplet, a color name, or an HTML hexadecimal color (e.g. #aabbcc ). If no argument is given to**-C**then under modern mode we select the current CPT.

**-G***fill*- Sets color or shade for vector interiors [Default is no fill].

**-I**[**x**]*dx*[/*dy*]- Only plot vectors at nodes every
*x_inc*,*y_inc*apart (must be multiples of original grid spacing). Append**m**for arc minutes or**s**for arc seconds. Alternatively, use**-Ix**to specify the multiples*multx*[/*multy*] directly [Default plots every node].

**-N**- Do NOT clip vectors at map boundaries [Default will clip].

**-Q***parameters*- Modify vector parameters. For vector heads, append vector head
*size*[Default is 0, i.e., stick-plot]. See VECTOR ATTRIBUTES for specifying additional attributes.

**-R***xmin*/*xmax*/*ymin*/*ymax*[**+r**][**+u***unit*] (more …)- Specify the region of interest. Specify a subset of the grid.

**-S**[**i**|**l**]*scale*[*unit*]- Sets scale for vector plot length in data units per plot distance measurement
unit [1]. Append
**c**,**i**, or**p**to indicate the measurement unit (cm, inch, or point); if no unit is given we use the default value that is controlled by PROJ_LENGTH_UNIT. Alternatively, use**-Sl***length*[*unit*] to set a fixed plot length for all vectors. Vectors given via plot unit scaling will plot as straight vectors and their lengths are not affected by map projection and coordinate locations. For geographic data you may alternatively give*scale*in data units per map distance unit (see Units). Then, your user units are scaled to map distances in the given unit which are projected to plot dimensions. These are geo-vectors that follow great circle paths and their lengths are affected by the map projection and their coordinates. Finally, use**-Si**if it is simpler to give the reciprocal scale in measurement unit per data unit or km per data unit. To report the minimum, maximum, and mean scaled vector length, use**-Vl**.

**-T**- Means the azimuths of Cartesian data sets should be adjusted according to the signs of the scales in the x- and y-directions [Leave alone]. This option can be used to convert vector azimuths in cases when a negative scale is used in one of both directions (e.g., positive down).

**-U**[*label*][**+c**][**+j***just*][**+o***dx*/*dy*] (more …)- Draw GMT time stamp logo on plot.

**-V**[*level*] (more …)- Select verbosity level [c].

**-W***pen*- Set pen attributes used for vector outlines [Default: width = default, color = black, style = solid].

**-X**[**a**|**c**|**f**|**r**][*xshift*[**u**]]

**-Y**[**a**|**c**|**f**|**r**][*yshift*[**u**]] (more …)- Shift plot origin.

**-Z**- The theta grid provided contains azimuths rather than directions (implies
**-A**).

**-f**[**i**|**o**]*colinfo*(more …)- Specify data types of input and/or output columns.

**-p**[**x**|**y**|**z**]*azim*[/*elev*[/*zlevel*]][**+w***lon0*/*lat0*[/*z0*]][**+v***x0*/*y0*] (more …)- Select perspective view.

**-t**[*transp*] (more …)- Set transparency level in percent.

**-^**or just**-**- Print a short message about the syntax of the command, then exits (NOTE: on Windows just use
**-**). **-+**or just**+**- Print an extensive usage (help) message, including the explanation of any module-specific option (but not the GMT common options), then exits.
**-?**or no arguments- Print a complete usage (help) message, including the explanation of all options, then exits.
**--PAR**=*value*- Temporarily override a GMT default setting; repeatable. See gmt.conf for parameters.

## Units¶

For map distance unit, append *unit* **d** for arc degree, **m** for arc
minute, and **s** for arc second, or **e** for meter [Default], **f**
for foot, **k** for km, **M** for statute mile, **n** for nautical mile,
and **u** for US survey foot. By default we compute such distances using
a spherical approximation with great circles (**-jg**) using the authalic radius
(see PROJ_MEAN_RADIUS). You can use **-jf** to perform
“Flat Earth” calculations (quicker but less accurate) or **-je** to perform
exact geodesic calculations (slower but more accurate; see
PROJ_GEODESIC for method used).

## Grid File Formats¶

By default GMT writes out grid as single precision floats in a COARDS-complaint netCDF file format. However, GMT is able to produce grid files in many other commonly used grid file formats and also facilitates so called “packing” of grids, writing out floating point data as 1- or 2-byte integers. (more …)

## Vector Attributes¶

Several modifiers may be appended to vector-producing options for specifying the placement of vector heads, their shapes, and the justification of the vector. Below, left and right refers to the side of the vector line when viewed from the start point to the end point of a segment:

+aanglesets the angle of the vector head apex [30].

+bplaces a vector head at the beginning of the vector path [none]. Optionally, appendtfor a terminal line,cfor a circle,afor arrow [Default],ifor tail,Afor plain open arrow, andIfor plain open tail. Further appendl|rto only draw the left or right half-sides of this head [both sides].

+eplaces a vector head at the end of the vector path [none]. Optionally, appendtfor a terminal line,cfor a circle,afor arrow [Default],ifor tail,Afor plain open arrow, andIfor plain open tail. Further appendl|rto only draw the left or right half-sides of this head [both sides].

+g[fill*] sets the vector head fill [Default fill is used, which may be no fill]. Turn off vector head fill by not appending afill.

+hshapesets the shape of the vector head (range -2/2). Default is controlled by MAP_VECTOR_SHAPE [0].

+ldraws half-arrows, using only the left side of specified heads [both sides].

+mplaces a vector head at the mid-point the vector path [none]. Appendforrfor forward or reverse direction of the vector [forward]. Optionally, appendtfor a terminal line,cfor a circle,afor arrow [Default],ifor tail,Afor plain open arrow, andIfor plain open tail. Further appendl|rto only draw the left or right half-sides of this head [both sides]. Cannot be combined with+bor+e.

+nnormscales down vector attributes (pen thickness, head size) with decreasing length, where vector plot lengths shorter thannormwill have their attributes scaled by length/norm[arrow attributes remains invariant to length]. For Cartesian vectors specify a length in plot units, while for geovectors specify a length in km.

+o[plon/plat] specifies the oblique pole for the great or small circles. Only needed for great circles if+qis given. If no pole is appended then we default to the north pole.

+p[pen] sets the vector pen attributes. If nopenis appended then the head outline is not drawn. [Default pen is half the width of stem pen, and head outline is drawn]

+qmeans the inputangle,lengthdata instead represent thestartandstopopening angles of the arc segment relative to the given point. See+oto specify a specific pole for the arc [north pole].

+rdraws half-arrows, using only the right side of specified heads [both sides].

+t[b|e]trim[unit] will shift the beginning or end point (or both) along the vector segment by the giventrim; append suitable unit (c,i, orp). If the modifiersb|eare not used thentrimmay be two values separated by a slash, which is used to specify different trims for the beginning and end. Positive trims will shorted the vector while negative trims will lengthen it [no trim].

In addition, all but circular vectors may take these modifiers:

+jjustdetermines how the inputx,ypoint relates to the vector. Choose frombeginning [default],end, orcenter.

+smeans the inputangle,lengthare instead thex,ycoordinates of the vector end point.

Finally, Cartesian vectors may take these modifiers:

+zscale[unit] expects inputdx,dyvector components and uses thescaleto convert to polar coordinates with length in given unit.

Note: Vectors were completely redesigned for GMT5 which separated the vector head (a polygon)
from the vector stem (a line). In GMT4, the entire vector was a polygon and it could only
be a straight Cartesian vector. Yes, the old GMT4 vector shape remains accessible if
you specify a vector (**-Sv**|**V**) using the GMT4 syntax, explained here: *size*, if present, will
be interpreted as *arrowwidth/headlength/headwidth* [Default is 0.075c/0.3c/0.25c (or
0.03i/0.12i/0.1i)]. By default, arrow attributes remain invariant to the length of the
arrow. To have the size of the vector scale down with decreasing size, append **n***norm*,
where vectors shorter than *norm* will have their attributes scaled by length/*norm*.
To center the vector on the balance point, use **−Svb**; to align point with the vector head,
use **−Svh**; to align point with the vector tail, use **−Svt** [Default]. To give the
head point’s coordinates instead of direction and length, use **−Svs**. Upper case
**B**, **H**, **T**, **S** will draw a double-headed vector [Default is single head].

## Examples¶

**Note**: Below are some examples of valid syntax for this module.
The examples that use remote files (file names starting with `@`

)
can be cut and pasted into your terminal for testing.
Other commands requiring input files are just dummy examples of the types
of uses that are common but cannot be run verbatim as written.

Note: Since many GMT plot examples are very short (i.e., one module call between the
**gmt begin** and **gmt end** commands), we will often present them using the quick
modern mode GMT Modern Mode One-line Commands syntax, which simplifies such short scripts.

To draw the vector field given by the files r.nc and theta.nc on a linear plot with scale 5 cm per data unit, using vector rather than stick plot, scale vector magnitudes so that 10 units equal 1 inch, and center vectors on the node locations, run

gmt grdvector r.nc theta.nc -Jx5c -A -Q0.1i+e+jc -S10i -pdf gradient

To plot a geographic data sets given the files comp_x.nc and comp_y.nc, using a length scale of 200 km per data unit and only plot every 3rd node in either direction, try

gmt grdvector comp_x.nc comp_y.nc -Ix3 -JH0/20c -Q0.1i+e+jc -S200k -pdf globe

## Notes¶

Be aware that using **-I** may lead to aliasing unless
your grid is smoothly varying over the new length increments.
It is generally better to filter your grids and resample at a
larger grid increment and use these grids instead of the originals.