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

Table of Contents


class matplotlib.lines.Line2D(xdata, ydata, linewidth=None, linestyle=None, color=None, marker=None, markersize=None, markeredgewidth=None, markeredgecolor=None, markerfacecolor=None, markerfacecoloralt='none', fillstyle=None, antialiased=None, dash_capstyle=None, solid_capstyle=None, dash_joinstyle=None, solid_joinstyle=None, pickradius=5, drawstyle=None, markevery=None, **kwargs)[source]

Bases: matplotlib.artist.Artist

A line - the line can have both a solid linestyle connecting all the vertices, and a marker at each vertex. Additionally, the drawing of the solid line is influenced by the drawstyle, e.g., one can create "stepped" lines in various styles.

Create a Line2D instance with x and y data in sequences xdata, ydata.

The kwargs are Line2D 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
animated bool
antialiased or aa bool
clip_box Bbox
clip_on bool
clip_path [(Path, Transform) | Patch | None]
color or c color
contains callable
dash_capstyle {'butt', 'round', 'projecting'}
dash_joinstyle {'miter', 'round', 'bevel'}
dashes sequence of floats (on/off ink in points) or (None, None)
drawstyle or ds {'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'}, default: 'default'
figure Figure
fillstyle {'full', 'left', 'right', 'bottom', 'top', 'none'}
gid str
in_layout bool
label object
linestyle or ls {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}
linewidth or lw float
marker marker style
markeredgecolor or mec color
markeredgewidth or mew float
markerfacecolor or mfc color
markerfacecoloralt or mfcalt color
markersize or ms float
markevery None or int or (int, int) or slice or List[int] or float or (float, float)
path_effects AbstractPathEffect
picker float or callable[[Artist, Event], Tuple[bool, dict]]
pickradius float
rasterized bool or None
sketch_params (scale: float, length: float, randomness: float)
snap bool or None
solid_capstyle {'butt', 'round', 'projecting'}
solid_joinstyle {'miter', 'round', 'bevel'}
transform matplotlib.transforms.Transform
url str
visible bool
xdata 1D array
ydata 1D array
zorder float

See set_linestyle() for a description of the line styles, set_marker() for a description of the markers, and set_drawstyle() for a description of the draw styles.


The Axes instance the artist resides in, or None.

contains(self, mouseevent)[source]

Test whether the mouse event occurred on the line. The pick radius determines the precision of the location test (usually within five points of the value). Use get_pickradius() or set_pickradius() to view or modify it.

mouseevent : matplotlib.backend_bases.MouseEvent
contains : bool

Whether any values are within the radius.

details : dict

A dictionary {'ind': pointlist}, where pointlist is a list of points of the line that are within the pickradius around the event position.

TODO: sort returned indices by distance

draw(self, renderer)[source]

Draw the Artist using the given renderer.

This method will be overridden in the Artist subclasses. Typically, it is implemented to not have any effect if the Artist is not visible (Artist.get_visible is False).

renderer : RendererBase subclass.
drawStyleKeys = ['default', 'steps-mid', 'steps-pre', 'steps-post', 'steps']
drawStyles = {'default': '_draw_lines', 'steps': '_draw_steps_pre', 'steps-mid': '_draw_steps_mid', 'steps-post': '_draw_steps_post', 'steps-pre': '_draw_steps_pre'}
fillStyles = ('full', 'left', 'right', 'bottom', 'top', 'none')
filled_markers = ('o', 'v', '^', '<', '>', '8', 's', 'p', '*', 'h', 'H', 'D', 'd', 'P', 'X')

Alias for get_antialiased.


Return whether antialiased rendering is used.


Alias for get_color.


Return the line color.

See also set_color.


Return the cap style for dashed lines.

See also set_dash_capstyle.


Return the join style for dashed lines.

See also set_dash_joinstyle.

get_data(self, orig=True)[source]

Return the xdata, ydata.

If orig is True, return the original data.


Return the drawstyle.

See also set_drawstyle.


Alias for get_drawstyle.


Return the marker fill style.

See also set_fillstyle.


Return the linestyle.

See also set_linestyle.


Return the linewidth in points.

See also set_linewidth.


Alias for get_linestyle.


Alias for get_linewidth.


Return the line marker.

See also set_marker.


Return the marker edge color.

See also set_markeredgecolor.


Return the marker edge width in points.

See also set_markeredgewidth.


Return the marker face color.

See also set_markerfacecolor.


Return the alternate marker face color.

See also set_markerfacecoloralt.


Return the marker size in points.

See also set_markersize.


Return the markevery setting for marker subsampling.

See also set_markevery.


Alias for get_markeredgecolor.


Alias for get_markeredgewidth.


Alias for get_markerfacecolor.


Alias for get_markerfacecoloralt.


Alias for get_markersize.


Return the Path object associated with this line.


Return the pick radius used for containment tests.

See contains for more details.


Return the cap style for solid lines.

See also set_solid_capstyle.


Return the join style for solid lines.

See also set_solid_joinstyle.

get_window_extent(self, renderer)[source]

Get the axes bounding box in display space.

The bounding box' width and height are nonnegative.

Subclasses should override for inclusion in the bounding box "tight" calculation. Default is to return an empty bounding box at 0, 0.

Be careful when using this function, the results will not update if the artist window extent of the artist changes. The extent can change due to any changes in the transform stack, such as changing the axes limits, the figure size, or the canvas used (as is done when saving a figure). This can lead to unexpected behavior where interactive figures will look fine on the screen, but will save incorrectly.

get_xdata(self, orig=True)[source]

Return the xdata.

If orig is True, return the original data, else the processed data.


Return the xy data as a Nx2 numpy array.

get_ydata(self, orig=True)[source]

Return the ydata.

If orig is True, return the original data, else the processed data.


Return whether line has a dashed linestyle.

See also set_linestyle.

lineStyles = {'': '_draw_nothing', ' ': '_draw_nothing', '-': '_draw_solid', '--': '_draw_dashed', '-.': '_draw_dash_dot', ':': '_draw_dotted', 'None': '_draw_nothing'}
markers = {'.': 'point', ',': 'pixel', 'o': 'circle', 'v': 'triangle_down', '^': 'triangle_up', '<': 'triangle_left', '>': 'triangle_right', '1': 'tri_down', '2': 'tri_up', '3': 'tri_left', '4': 'tri_right', '8': 'octagon', 's': 'square', 'p': 'pentagon', '*': 'star', 'h': 'hexagon1', 'H': 'hexagon2', '+': 'plus', 'x': 'x', 'D': 'diamond', 'd': 'thin_diamond', '|': 'vline', '_': 'hline', 'P': 'plus_filled', 'X': 'x_filled', 0: 'tickleft', 1: 'tickright', 2: 'tickup', 3: 'tickdown', 4: 'caretleft', 5: 'caretright', 6: 'caretup', 7: 'caretdown', 8: 'caretleftbase', 9: 'caretrightbase', 10: 'caretupbase', 11: 'caretdownbase', 'None': 'nothing', None: 'nothing', ' ': 'nothing', '': 'nothing'}
recache(self, always=False)[source]
set_aa(self, b)

Alias for set_antialiased.

set_antialiased(self, b)[source]

Set whether to use antialiased rendering.

b : bool
set_c(self, color)

Alias for set_color.

set_color(self, color)[source]

Set the color of the line.

color : color
set_dash_capstyle(self, s)[source]

Set the cap style for dashed lines.

s : {'butt', 'round', 'projecting'}
set_dash_joinstyle(self, s)[source]

Set the join style for dashed lines.

s : {'miter', 'round', 'bevel'}

For examples see Join styles and cap styles.

set_dashes(self, seq)[source]

Set the dash sequence.

The dash sequence is a sequence of floats of even length describing the length of dashes and spaces in points.

For example, (5, 2, 1, 2) describes a sequence of 5 point and 1 point dashes separated by 2 point spaces.

seq : sequence of floats (on/off ink in points) or (None, None)

If seq is empty or (None, None), the linestyle will be set to solid.

set_data(self, *args)[source]

Set the x and y data.

*args : (2, N) array or two 1D arrays
set_drawstyle(self, drawstyle)[source]

Set the drawstyle of the plot.

The drawstyle determines how the points are connected.

drawstyle : {'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'}, default: 'default'

For 'default', the points are connected with straight lines.

The steps variants connect the points with step-like lines, i.e. horizontal lines with vertical steps. They differ in the location of the step:

  • 'steps-pre': The step is at the beginning of the line segment, i.e. the line will be at the y-value of point to the right.
  • 'steps-mid': The step is halfway between the points.
  • 'steps-post: The step is at the end of the line segment, i.e. the line will be at the y-value of the point to the left.
  • 'steps' is equal to 'steps-pre' and is maintained for backward-compatibility.
set_ds(self, drawstyle)

Alias for set_drawstyle.

set_fillstyle(self, fs)[source]

Set the marker fill style.

fs : {'full', 'left', 'right', 'bottom', 'top', 'none'}

Possible values:

  • 'full': Fill the whole marker with the markerfacecolor.
  • 'left', 'right', 'bottom', 'top': Fill the marker half at the given side with the markerfacecolor. The other half of the marker is filled with markerfacecoloralt.
  • 'none': No filling.

For examples see Marker filling-styles.

set_linestyle(self, ls)[source]

Set the linestyle of the line.

ls : {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}

Possible values:

  • A string:

    Linestyle Description
    '-' or 'solid' solid line
    '--' or 'dashed' dashed line
    '-.' or 'dashdot' dash-dotted line
    ':' or 'dotted' dotted line
    'None' or ' ' or '' draw nothing

    Optionally, the string may be preceded by a drawstyle, e.g. 'steps--'. See set_drawstyle() for details.

  • Alternatively a dash tuple of the following form can be provided:

    (offset, onoffseq)

    where onoffseq is an even length tuple of on and off ink in points. See also set_dashes().

set_linewidth(self, w)[source]

Set the line width in points.

w : float

Line width, in points.

set_ls(self, ls)

Alias for set_linestyle.

set_lw(self, w)

Alias for set_linewidth.

set_marker(self, marker)[source]

Set the line marker.

marker : marker style

See markers for full description of possible arguments.

set_markeredgecolor(self, ec)[source]

Set the marker edge color.

ec : color
set_markeredgewidth(self, ew)[source]

Set the marker edge width in points.

ew : float

Marker edge width, in points.

set_markerfacecolor(self, fc)[source]

Set the marker face color.

fc : color
set_markerfacecoloralt(self, fc)[source]

Set the alternate marker face color.

fc : color
set_markersize(self, sz)[source]

Set the marker size in points.

sz : float

Marker size, in points.

set_markevery(self, every)[source]

Set the markevery property to subsample the plot when using markers.

e.g., if every=5, every 5-th marker will be plotted.

every : None or int or (int, int) or slice or List[int] or float or (float, float)

Which markers to plot.

  • every=None, every point will be plotted.
  • every=N, every N-th marker will be plotted starting with marker 0.
  • every=(start, N), every N-th marker, starting at point start, will be plotted.
  • every=slice(start, end, N), every N-th marker, starting at point start, up to but not including point end, will be plotted.
  • every=[i, j, m, n], only markers at points i, j, m, and n will be plotted.
  • every=0.1, (i.e. a float) then markers will be spaced at approximately equal distances along the line; the distance along the line between markers is determined by multiplying the display-coordinate distance of the axes bounding-box diagonal by the value of every.
  • every=(0.5, 0.1) (i.e. a length-2 tuple of float), the same functionality as every=0.1 is exhibited but the first marker will be 0.5 multiplied by the display-coordinate-diagonal-distance along the line.


Setting the markevery property will only show markers at actual data points. When using float arguments to set the markevery property on irregularly spaced data, the markers will likely not appear evenly spaced because the actual data points do not coincide with the theoretical spacing between markers.

When using a start offset to specify the first marker, the offset will be from the first data point which may be different from the first the visible data point if the plot is zoomed in.

If zooming in on a plot when using float arguments then the actual data points that have markers will change because the distance between markers is always determined from the display-coordinates axes-bounding-box-diagonal regardless of the actual axes data limits.

set_mec(self, ec)

Alias for set_markeredgecolor.

set_mew(self, ew)

Alias for set_markeredgewidth.

set_mfc(self, fc)

Alias for set_markerfacecolor.

set_mfcalt(self, fc)

Alias for set_markerfacecoloralt.

set_ms(self, sz)

Alias for set_markersize.

set_picker(self, p)[source]

Sets the event picker details for the line.

p : float or callable[[Artist, Event], Tuple[bool, dict]]

If a float, it is used as the pick radius in points.

set_pickradius(self, d)[source]

Set the pick radius used for containment tests.

See contains for more details.

d : float

Pick radius, in points.

set_solid_capstyle(self, s)[source]

Set the cap style for solid lines.

s : {'butt', 'round', 'projecting'}
set_solid_joinstyle(self, s)[source]

Set the join style for solid lines.

s : {'miter', 'round', 'bevel'}

For examples see Join styles and cap styles.

set_transform(self, t)[source]

Set the Transformation instance used by this artist.

t : matplotlib.transforms.Transform
set_xdata(self, x)[source]

Set the data array for x.

x : 1D array
set_ydata(self, y)[source]

Set the data array for y.

y : 1D array
update_from(self, other)[source]

Copy properties from other to self.

validCap = ('butt', 'round', 'projecting')
validJoin = ('miter', 'round', 'bevel')
zorder = 2