pytransform3d.plot_utils.Arrow3D#
- class pytransform3d.plot_utils.Arrow3D(xs, ys, zs, *args, **kwargs)[source]#
Bases:
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
CurveA
<-
head_length=0.4, head_width=0.2, widthA=1.0, widthB=1.0, lengthA=0.2, lengthB=0.2, angleA=0, angleB=0, scaleA=None, scaleB=None
CurveB
->
head_length=0.4, head_width=0.2, widthA=1.0, widthB=1.0, lengthA=0.2, lengthB=0.2, angleA=0, angleB=0, scaleA=None, scaleB=None
CurveAB
<->
head_length=0.4, head_width=0.2, widthA=1.0, widthB=1.0, lengthA=0.2, lengthB=0.2, angleA=0, angleB=0, scaleA=None, scaleB=None
CurveFilledA
<|-
head_length=0.4, head_width=0.2, widthA=1.0, widthB=1.0, lengthA=0.2, lengthB=0.2, angleA=0, angleB=0, scaleA=None, scaleB=None
CurveFilledB
-|>
head_length=0.4, head_width=0.2, widthA=1.0, widthB=1.0, lengthA=0.2, lengthB=0.2, angleA=0, angleB=0, scaleA=None, scaleB=None
CurveFilledAB
<|-|>
head_length=0.4, head_width=0.2, widthA=1.0, widthB=1.0, lengthA=0.2, lengthB=0.2, angleA=0, angleB=0, scaleA=None, scaleB=None
BracketA
]-
widthA=1.0, lengthA=0.2, angleA=0
BracketB
-[
widthB=1.0, lengthB=0.2, angleB=0
BracketAB
]-[
widthA=1.0, lengthA=0.2, angleA=0, widthB=1.0, lengthB=0.2, angleB=0
BarAB
|-|
widthA=1.0, angleA=0, widthB=1.0, angleB=0
BracketCurve
]->
widthA=1.0, lengthA=0.2, angleA=None
CurveBracket
<-[
widthB=1.0, lengthB=0.2, angleB=None
Simple
simple
head_length=0.5, head_width=0.5, tail_width=0.2
Fancy
fancy
head_length=0.4, head_width=0.4, tail_width=0.4
Wedge
wedge
tail_width=0.3, shrink_factor=0.5
- 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
Arc3
arc3
rad=0.0
Angle3
angle3
angleA=90, angleB=0
Angle
angle
angleA=90, angleB=0, rad=0.0
Arc
arc
angleA=0, angleB=0, armA=None, armB=None, rad=0.0
Bar
bar
armA=0.0, armB=0.0, fraction=0.3, angle=None
- patchA, patchB~matplotlib.patches.Patch, default: None
Head and tail patches, respectively.
- shrinkA, shrinkBfloat, default: 2
Shrink amount, in points, 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.
- Other Parameters:
- **kwargs~matplotlib.patches.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 and two offsets from the bottom left corner of the image alpha: unknown animated: bool antialiased or aa: bool or None capstyle: .CapStyle or {‘butt’, ‘projecting’, ‘round’} clip_box: ~matplotlib.transforms.BboxBase or None clip_on: bool clip_path: Patch or (Path, Transform) or None color: :mpltype:`color` edgecolor or ec: :mpltype:`color` or None facecolor or fc: :mpltype:`color` or None figure: ~matplotlib.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 mouseover: bool path_effects: list of .AbstractPathEffect picker: None or bool or float or callable rasterized: bool sketch_params: (scale: float, length: float, randomness: float) snap: bool or None transform: ~matplotlib.transforms.Transform url: str visible: bool zorder: float
In contrast to other patches, the default
capstyle
andjoinstyle
for FancyArrowPatch are set to"round"
.
Methods
__init__
(xs, ys, zs, *args, **kwargs)There are two ways for defining an arrow:
do_3d_projection
([renderer])draw
(renderer)Draw the patch.
set
(*[, agg_filter, alpha, animated, ...])Set multiple properties at once.
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
- set(*, agg_filter=<UNSET>, alpha=<UNSET>, animated=<UNSET>, antialiased=<UNSET>, arrowstyle=<UNSET>, capstyle=<UNSET>, clip_box=<UNSET>, clip_on=<UNSET>, clip_path=<UNSET>, color=<UNSET>, connectionstyle=<UNSET>, data=<UNSET>, edgecolor=<UNSET>, facecolor=<UNSET>, fill=<UNSET>, gid=<UNSET>, hatch=<UNSET>, in_layout=<UNSET>, joinstyle=<UNSET>, label=<UNSET>, linestyle=<UNSET>, linewidth=<UNSET>, mouseover=<UNSET>, mutation_aspect=<UNSET>, mutation_scale=<UNSET>, patchA=<UNSET>, patchB=<UNSET>, path_effects=<UNSET>, picker=<UNSET>, positions=<UNSET>, rasterized=<UNSET>, sketch_params=<UNSET>, snap=<UNSET>, transform=<UNSET>, url=<UNSET>, visible=<UNSET>, zorder=<UNSET>)#
Set multiple properties at once.
Supported properties are
- 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 and two offsets from the bottom left corner of the image alpha: scalar or None animated: bool antialiased or aa: bool or None arrowstyle: str or ~matplotlib.patches.ArrowStyle capstyle: .CapStyle or {‘butt’, ‘projecting’, ‘round’} clip_box: ~matplotlib.transforms.BboxBase or None clip_on: bool clip_path: Patch or (Path, Transform) or None color: :mpltype:`color` connectionstyle: [ ‘arc3’ | ‘angle3’ | ‘angle’ | ‘arc’ | ‘bar’ ] data: iterable edgecolor or ec: :mpltype:`color` or None facecolor or fc: :mpltype:`color` or None figure: ~matplotlib.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 mouseover: bool mutation_aspect: float mutation_scale: float patchA: .patches.Patch patchB: .patches.Patch path_effects: list of .AbstractPathEffect picker: None or bool or float or callable positions: unknown rasterized: bool sketch_params: (scale: float, length: float, randomness: float) snap: bool or None transform: ~matplotlib.transforms.Transform url: str visible: bool zorder: float