pytransform3d.plot_utils.Arrow3D

class pytransform3d.plot_utils.Arrow3D(xs, ys, zs, *args, **kwargs)[source]

Bases: matplotlib.patches.FancyArrowPatch

A Matplotlib patch that represents an arrow in 3D.

Source: http://stackoverflow.com/a/11156353/915743

__init__(xs, ys, zs, *args, **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.

path~matplotlib.path.Path, 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, patchB.Patch, 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. Deprecated.

Other Parameters
**kwargs.Patch properties, optional

Here is a list of available .Patch properties:

Properties:

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: scalar or None animated: bool antialiased or aa: unknown capstyle: .CapStyle or {‘butt’, ‘projecting’, ‘round’} 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: .JoinStyle or {‘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 float or callable rasterized: bool 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".

Methods

__init__(xs, ys, zs, *args, **kwargs)

There are two ways for defining an arrow:

draw(renderer)

Draw the patch.

set_data(xs, ys, zs)

Set the arrow data.

Attributes

set_data(xs, ys, zs)[source]

Set the arrow data.

Parameters
xsiterable

List of x positions

ysiterable

List of y positions

zsiterable

List of z positions

draw(renderer)[source]

Draw the patch.

Examples using pytransform3d.plot_utils.Arrow3D