matplotlib.patches.FancyArrowPatch

class matplotlib.patches.FancyArrowPatch(posA=None, posB=None, path=None, arrowstyle='simple', connectionstyle='arc3', patchA=None, patchB=None, shrinkA=2, shrinkB=2, mutation_scale=1, mutation_aspect=None, dpi_cor=1, **kwargs)[source]

Bases: matplotlib.patches.Patch

A fancy arrow patch. It draws an arrow using the ArrowStyle.

The head and tail positions are fixed at the specified start and end points of the arrow, but the size and shape (in display coordinates) of the arrow does not change when the axis is moved or zoomed.

There are two ways for defining an arrow:

  • If posA and posB are given, a path connecting two points is created according to connectionstyle. The path will be clipped with patchA and patchB and further shrunken by shrinkA and shrinkB. An arrow is drawn along this resulting path using the arrowstyle parameter.
  • Alternatively if path is provided, an arrow is drawn along this path and patchA, patchB, shrinkA, and shrinkB are ignored.
Parameters:
posA, posB(float, float), default: None

(x, y) coordinates of arrow tail and arrow head respectively.

pathPath, default: None

If provided, an arrow is drawn along this path and patchA, patchB, shrinkA, and shrinkB are ignored.

arrowstylestr or ArrowStyle, default: 'simple'

The ArrowStyle with which the fancy arrow is drawn. If a string, it should be one of the available arrowstyle names, with optional comma-separated attributes. The optional attributes are meant to be scaled with the mutation_scale. The following arrow styles are available:

Class Name Attrs
Curve - None
CurveB -> head_length=0.4, head_width=0.2
BracketB -[ widthB=1.0, lengthB=0.2, angleB=None
CurveFilledB -|> head_length=0.4, head_width=0.2
CurveA <- head_length=0.4, head_width=0.2
CurveAB <-> head_length=0.4, head_width=0.2
CurveFilledA <|- head_length=0.4, head_width=0.2
CurveFilledAB <|-|> head_length=0.4, head_width=0.2
BracketA ]- widthA=1.0, lengthA=0.2, angleA=None
BracketAB ]-[ widthA=1.0, lengthA=0.2, angleA=None, widthB=1.0, lengthB=0.2, angleB=None
Fancy fancy head_length=0.4, head_width=0.4, tail_width=0.4
Simple simple head_length=0.5, head_width=0.5, tail_width=0.2
Wedge wedge tail_width=0.3, shrink_factor=0.5
BarAB |-| widthA=1.0, angleA=None, widthB=1.0, angleB=None
connectionstylestr or ConnectionStyle or None, optional, default: 'arc3'

The ConnectionStyle with which posA and posB are connected. If a string, it should be one of the available connectionstyle names, with optional comma-separated attributes. The following connection styles are available:

Class Name Attrs
Angle angle angleA=90, angleB=0, rad=0.0
Angle3 angle3 angleA=90, angleB=0
Arc arc angleA=0, angleB=0, armA=None, armB=None, rad=0.0
Arc3 arc3 rad=0.0
Bar bar armA=0.0, armB=0.0, fraction=0.3, angle=None
patchA, patchBPatch, default: None

Head and tail patches, respectively.

shrinkA, shrinkBfloat, default: 2

Shrinking factor of the tail and head of the arrow respectively.

mutation_scalefloat, default: 1

Value with which attributes of arrowstyle (e.g., head_length) will be scaled.

mutation_aspectNone or float, default: None

The height of the rectangle will be squeezed by this value before the mutation and the mutated box will be stretched by the inverse of it.

dpi_corfloat, default: 1

dpi_cor is currently used for linewidth-related things and shrink factor. Mutation scale is affected by this.

Other Parameters:
**kwargsPatch properties, optional

Here is a list of available Patch properties:

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 or aa unknown
capstyle {'butt', 'round', 'projecting'}
clip_box Bbox
clip_on bool
clip_path Patch or (Path, Transform) or None
color color
contains unknown
edgecolor or ec color or None or 'auto'
facecolor or fc color or None
figure Figure
fill bool
gid str
hatch {'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}
in_layout bool
joinstyle {'miter', 'round', 'bevel'}
label object
linestyle or ls {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}
linewidth or lw float or None
path_effects AbstractPathEffect
picker None or bool 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

In contrast to other patches, the default capstyle and joinstyle for FancyArrowPatch are set to "round".

__init__(self, posA=None, posB=None, path=None, arrowstyle='simple', connectionstyle='arc3', patchA=None, patchB=None, shrinkA=2, shrinkB=2, mutation_scale=1, mutation_aspect=None, dpi_cor=1, **kwargs)[source]

There are two ways for defining an arrow:

  • If posA and posB are given, a path connecting two points is created according to connectionstyle. The path will be clipped with patchA and patchB and further shrunken by shrinkA and shrinkB. An arrow is drawn along this resulting path using the arrowstyle parameter.
  • Alternatively if path is provided, an arrow is drawn along this path and patchA, patchB, shrinkA, and shrinkB are ignored.
Parameters:
posA, posB(float, float), default: None

(x, y) coordinates of arrow tail and arrow head respectively.

pathPath, default: None

If provided, an arrow is drawn along this path and patchA, patchB, shrinkA, and shrinkB are ignored.

arrowstylestr or ArrowStyle, default: 'simple'

The ArrowStyle with which the fancy arrow is drawn. If a string, it should be one of the available arrowstyle names, with optional comma-separated attributes. The optional attributes are meant to be scaled with the mutation_scale. The following arrow styles are available:

Class Name Attrs
Curve - None
CurveB -> head_length=0.4, head_width=0.2
BracketB -[ widthB=1.0, lengthB=0.2, angleB=None
CurveFilledB -|> head_length=0.4, head_width=0.2
CurveA <- head_length=0.4, head_width=0.2
CurveAB <-> head_length=0.4, head_width=0.2
CurveFilledA <|- head_length=0.4, head_width=0.2
CurveFilledAB <|-|> head_length=0.4, head_width=0.2
BracketA ]- widthA=1.0, lengthA=0.2, angleA=None
BracketAB ]-[ widthA=1.0, lengthA=0.2, angleA=None, widthB=1.0, lengthB=0.2, angleB=None
Fancy fancy head_length=0.4, head_width=0.4, tail_width=0.4
Simple simple head_length=0.5, head_width=0.5, tail_width=0.2
Wedge wedge tail_width=0.3, shrink_factor=0.5
BarAB |-| widthA=1.0, angleA=None, widthB=1.0, angleB=None
connectionstylestr or ConnectionStyle or None, optional, default: 'arc3'

The ConnectionStyle with which posA and posB are connected. If a string, it should be one of the available connectionstyle names, with optional comma-separated attributes. The following connection styles are available:

Class Name Attrs
Angle angle angleA=90, angleB=0, rad=0.0
Angle3 angle3 angleA=90, angleB=0
Arc arc angleA=0, angleB=0, armA=None, armB=None, rad=0.0
Arc3 arc3 rad=0.0
Bar bar armA=0.0, armB=0.0, fraction=0.3, angle=None
patchA, patchBPatch, default: None

Head and tail patches, respectively.

shrinkA, shrinkBfloat, default: 2

Shrinking factor of the tail and head of the arrow respectively.

mutation_scalefloat, default: 1

Value with which attributes of arrowstyle (e.g., head_length) will be scaled.

mutation_aspectNone or float, default: None

The height of the rectangle will be squeezed by this value before the mutation and the mutated box will be stretched by the inverse of it.

dpi_corfloat, default: 1

dpi_cor is currently used for linewidth-related things and shrink factor. Mutation scale is affected by this.

Other Parameters:
**kwargsPatch properties, optional

Here is a list of available Patch properties:

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 or aa unknown
capstyle {'butt', 'round', 'projecting'}
clip_box Bbox
clip_on bool
clip_path Patch or (Path, Transform) or None
color color
contains unknown
edgecolor or ec color or None or 'auto'
facecolor or fc color or None
figure Figure
fill bool
gid str
hatch {'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}
in_layout bool
joinstyle {'miter', 'round', 'bevel'}
label object
linestyle or ls {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}
linewidth or lw float or None
path_effects AbstractPathEffect
picker None or bool 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

In contrast to other patches, the default capstyle and joinstyle for FancyArrowPatch are set to "round".

__module__ = 'matplotlib.patches'
__str__(self)[source]

Return str(self).

draw(self, renderer)[source]

Draw the Artist (and its children) using the given renderer.

This has no effect if the artist is not visible (Artist.get_visible returns False).

Parameters:
rendererRendererBase subclass.

Notes

This method is overridden in the Artist subclasses.

get_arrowstyle(self)[source]

Return the arrowstyle object.

get_connectionstyle(self)[source]

Return the ConnectionStyle used.

get_dpi_cor(self)[source]

dpi_cor is currently used for linewidth-related things and shrink factor. Mutation scale is affected by this.

Returns:
scalar
get_mutation_aspect(self)[source]

Return the aspect ratio of the bbox mutation.

get_mutation_scale(self)[source]

Return the mutation scale.

Returns:
scalar
get_path(self)[source]

Return the path of the arrow in the data coordinates. Use get_path_in_displaycoord() method to retrieve the arrow path in display coordinates.

get_path_in_displaycoord(self)[source]

Return the mutated path of the arrow in display coordinates.

set_arrowstyle(self, arrowstyle=None, **kw)[source]

Set the arrow style. Old attributes are forgotten. Without arguments (or with arrowstyle=None) returns available box styles as a list of strings.

Parameters:
arrowstyleNone or ArrowStyle or str, default: None

Can be a string with arrowstyle name with optional comma-separated attributes, e.g.:

set_arrowstyle("Fancy,head_length=0.2")

Alternatively attributes can be provided as keywords, e.g.:

set_arrowstyle("fancy", head_length=0.2)
set_connectionstyle(self, connectionstyle, **kw)[source]

Set the connection style. Old attributes are forgotten.

Parameters:
connectionstylestr or ConnectionStyle or None, optional

Can be a string with connectionstyle name with optional comma-separated attributes, e.g.:

set_connectionstyle("arc,angleA=0,armA=30,rad=10")

Alternatively, the attributes can be provided as keywords, e.g.:

set_connectionstyle("arc", angleA=0,armA=30,rad=10)

Without any arguments (or with connectionstyle=None), return available styles as a list of strings.

set_dpi_cor(self, dpi_cor)[source]

dpi_cor is currently used for linewidth-related things and shrink factor. Mutation scale is affected by this.

Parameters:
dpi_corfloat
set_mutation_aspect(self, aspect)[source]

Set the aspect ratio of the bbox mutation.

Parameters:
aspectfloat
set_mutation_scale(self, scale)[source]

Set the mutation scale.

Parameters:
scalefloat
set_patchA(self, patchA)[source]

Set the tail patch.

Parameters:
patchApatches.Patch
set_patchB(self, patchB)[source]

Set the head patch.

Parameters:
patchBpatches.Patch
set_positions(self, posA, posB)[source]

Set the begin and end positions of the connecting path.

Parameters:
posA, posBNone, tuple

(x, y) coordinates of arrow tail and arrow head respectively. If None use current value.

Examples using matplotlib.patches.FancyArrowPatch