You are reading an old version of the documentation (v3.0.0). For the latest version see
Version 3.0.0
Fork me on GitHub

Table Of Contents


matplotlib.pyplot.arrow(x, y, dx, dy, **kwargs)[source]

Add an arrow to the axes.

This draws an arrow from (x, y) to (x+dx, y+dy).

x, y : float

The x/y-coordinate of the arrow base.

dx, dy : float

The length of the arrow along x/y-direction.

arrow : FancyArrow

The created FancyArrow object.

Other Parameters:

Optional kwargs (inherited from FancyArrow patch) control the arrow construction and properties:

Constructor arguments
width: float (default: 0.001)

width of full arrow tail

length_includes_head: bool (default: False)

True if head is to be counted in calculating the length.

head_width: float or None (default: 3*width)

total width of the full arrow head

head_length: float or None (default: 1.5 * head_width)

length of arrow head

shape: ['full', 'left', 'right'] (default: 'full')

draw the left-half, right-half, or full arrow

overhang: float (default: 0)

fraction that the arrow is swept back (0 overhang means triangular shape). Can be negative or greater than one.

head_starts_at_zero: bool (default: False)

if True, the head starts being drawn at coordinate 0 instead of ending at coordinate 0.

Other valid kwargs (inherited from :class:`Patch`) are:
Property Description
agg_filter a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array
alpha float or None
animated bool
antialiased unknown
capstyle {'butt', 'round', 'projecting'}
clip_box Bbox
clip_on bool
clip_path [(Path, Transform) | Patch | None]
color color
contains callable
edgecolor color or None or 'auto'
facecolor color or None
figure Figure
fill bool
gid str
hatch {'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}
in_layout bool
joinstyle {'miter', 'round', 'bevel'}
label object
linestyle {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}
linewidth float or None for default
path_effects AbstractPathEffect
picker None or bool or float or callable
rasterized bool or None
sketch_params (scale: float, length: float, randomness: float)
snap bool or None
transform Transform
url str
visible bool
zorder float


The resulting arrow is affected by the axes aspect ratio and limits. This may produce an arrow whose head is not square with its stem. To create an arrow whose head is square with its stem, use annotate() for example:

>>> ax.annotate("", xy=(0.5, 0.5), xytext=(0, 0),
...             arrowprops=dict(arrowstyle="->"))

Examples using matplotlib.pyplot.arrow