# Vector Attributes

Set arrow parameters. They are specified by a keyword (arrow) and a named tuple. Several modifiers may be provided 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:

arrow=(length=..., start=..., shape=..., pen=..., norm=..., etc)
• len=xx or length=xx
Length of the vector head. xx may be numeric, a string with the length and the units attached (as in len="2c") or a tuple with length and units as in len=(2,:centimeters)
• angle=xx
Sets the angle of the vector head apex [default 30]
• start=true
Places a vector head at the beginning of the vector path [none]. Optionally, set
• start=:line – For a terminal line
• start=:arrow – For a arrow (the default)
• start=:circle – For a circle
• start=:tail – For a tail
• start=:open_arrow – For a plain open arrow
• start=:open_tail – For a plain open tail
• start=:left_side – For draw the left half-side
• start=:right_side – For draw the right half-side
• stop=true
Places a vector head at the end of the vector path [none]. Optionally, set the same values as the start case.
• middle=true
Places a vector head at the mid-point of the vector path [none]. Optionally, set the same values as the start case but it can't be used with the start and stop options. But it accepts two further options:
• middle=:forward
Forward direction of the vector [the default]
• middle=:reverse
Reverse direction of the vector.
• fill=color
Sets the vector head fill. The color value may contain any of valid ways ways of specifying color.
• fill=:none
• shape=xx
Sets the shape of the vector head (range -2/2). Determines the shape of the head of a vector. Normally (i.e., for vector_shape = 0), the head will be triangular, but can be changed to an arrow (1) or an open V (2). Intermediate settings give something in between. Negative values (up to -2) are allowed as well. Shortcuts available as:
• shape=:triang same as shape=0
• shape=:arrow same as shape=1
• shape=:V same as shape=2
• half=:left
Draw half-arrows, using only the left side of specified heads [default is both sides].
• half=:right
Draw half-arrows, using only the right side of specified heads [default is both sides].
• norm=xx
Scales down vector attributes (pen thickness, head size) with decreasing length, where vector plot lengths shorter than norm will have their attributes scaled by length/norm. xx may be a number or a string (number&unit).
• pole=(plon,plat) – Specifies the oblique pole for the great or small circles.
• pen=pen
Sets the vector pen attributes. The pen value may contain any of valid ways of specifying pens. If pen has a leading '-' (and hence the pen value must be a string) then the head outline is not drawn.
• ang1_ang2=true or start_stop=true
Means that input angle, length data instead represent the start and stop opening angles of the arc segment relative to the given point.
• trim=trim
Shift the beginning or end point (or both) along the vector segment by the given trim. To select begin or end prepend a 'b' or a 'e' to the trim value (hence it must be a string). Append suitable unit (c, i, or p). If the modifiers b|e are not used then trim may be two values separated by a slash, which is used to specify different trims for the beginning and end. Positive trims will short the vector while negative trims will lengthen it [no trim].

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

• justify=??
Determines how the input x,y point relates to the vector. Choose from
• justify=:begin – The default
• justify=:end
• justify=:center
• endpoint=true
Means that input angle and length are provided instead the x, y coordinates of the vector end point.

Finally, Cartesian vectors may take this option:

• uv=scale
Expects input vx,vy vector components and uses the scale to convert to polar coordinates with length in given unit.