class matplotlib.spines.Spine(axes, spine_type, path, **kwargs)[source]

Bases: matplotlib.patches.Patch

An axis spine -- the line noting the data area boundaries.

Spines are the lines connecting the axis tick marks and noting the boundaries of the data area. They can be placed at arbitrary positions. See set_position for more information.

The default position is ('outward', 0).

Spines are subclasses of Patch, and inherit much of their behavior.

Spines draw a line, a circle, or an arc depending if set_patch_line, set_patch_circle, or set_patch_arc has been called. Line-like is the default.


The Axes instance containing the spine.


The spine type.


The Path instance used to draw the spine.

Other Parameters:

Valid keyword arguments 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 scalar or None
animated bool
antialiased or aa bool or None
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
classmethod arc_spine(axes, spine_type, center, radius, theta1, theta2, **kwargs)[source]

Create and return an arc Spine.

classmethod circular_spine(axes, center, radius, **kwargs)[source]

Create and return a circular Spine.




Deprecated since version 3.4:


Clear the current spine.


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).

rendererRendererBase subclass.


This method is overridden in the Artist subclasses.


Get the bounds of the spine.


Return the Transform instance mapping patch coordinates to data coordinates.

For example, one may define a patch of a circle which represents a radius of 5 by providing coordinates for a unit circle, and a transform which scales the coordinates (the patch coordinate) by 5.


Return the path of this patch.


Return the spine position.


Return the spine transform.


Return the window extent of the spines in display space, including padding for ticks (but not their labels)

classmethod linear_spine(axes, spine_type, **kwargs)[source]

Create and return a linear Spine.


Register an axis.

An axis should be registered with its corresponding spine from the Axes instance. This allows the spine to clear any axis properties when needed.

set_bounds(low=None, high=None)[source]

Set the spine bounds.

lowfloat or None, optional

The lower spine bound. Passing None leaves the limit unchanged.

The bounds may also be passed as the tuple (low, high) as the first positional argument.

highfloat or None, optional

The higher spine bound. Passing None leaves the limit unchanged.


Set the edgecolor.



This method does not modify the facecolor (which defaults to "none"), unlike the Patch.set_color method defined in the parent class. Use Patch.set_facecolor to set the facecolor.

set_patch_arc(center, radius, theta1, theta2)[source]

Set the spine to be arc-like.

set_patch_circle(center, radius)[source]

Set the spine to be circular.


Set the spine to be linear.


Set the position of the spine.

Spine position is specified by a 2 tuple of (position type, amount). The position types are:

  • 'outward': place the spine out from the data area by the specified number of points. (Negative values place the spine inwards.)
  • 'axes': place the spine at the specified Axes coordinate (0 to 1).
  • 'data': place the spine at the specified data coordinate.

Additionally, shorthand notations define a special positions:

  • 'center' -> ('axes', 0.5)
  • 'zero' -> ('data', 0.0)
class matplotlib.spines.Spines(**kwargs)[source]


The container of all Spines in an Axes.

The interface is dict-like mapping names (e.g. 'left') to Spine objects. Additionally it implements some pandas.Series-like features like accessing elements by attribute:


Multiple spines can be addressed simultaneously by passing a list:

spines[['top', 'right']].set_visible(False)

Use an open slice to address all spines:


The latter two indexing methods will return a SpinesProxy that broadcasts all set_* calls to its members, but cannot be used for any other operation.

classmethod from_dict(d)[source]
class matplotlib.spines.SpinesProxy(spine_dict)[source]

Bases: object

A proxy to broadcast set_* method calls to all contained Spines.

The proxy cannot be used for any other operations on its members.

The supported methods are determined dynamically based on the contained spines. If not all spines support a given method, it's executed only on the subset of spines that support it.