matplotlib.legend_handler#

Default legend handlers.

Important

This is a low-level legend API, which most end users do not need.

We recommend that you are familiar with the legend guide before reading this documentation.

Legend handlers are expected to be a callable object with a following signature.

legend_handler(legend, orig_handle, fontsize, handlebox)

Where legend is the legend itself, orig_handle is the original plot, fontsize is the fontsize in pixels, and handlebox is a OffsetBox instance. Within the call, you should create relevant artists (using relevant properties from the legend and/or orig_handle) and add them into the handlebox. The artists needs to be scaled according to the fontsize (note that the size is in pixel, i.e., this is dpi-scaled value).

This module includes definition of several legend handler classes derived from the base class (HandlerBase) with the following method:

def legend_artist(self, legend, orig_handle, fontsize, handlebox)
class matplotlib.legend_handler.HandlerBase(xpad=0.0, ypad=0.0, update_func=None)[source]#

A Base class for default legend handlers.

The derived classes are meant to override create_artists method, which has a following signature.:

def create_artists(self, legend, orig_handle,
                   xdescent, ydescent, width, height, fontsize,
                   trans):

The overridden method needs to create artists of the given transform that fits in the given dimension (xdescent, ydescent, width, height) that are scaled by fontsize if necessary.

adjust_drawing_area(legend, orig_handle, xdescent, ydescent, width, height, fontsize)[source]#
create_artists(legend, orig_handle, xdescent, ydescent, width, height, fontsize, trans)[source]#
legend_artist(legend, orig_handle, fontsize, handlebox)[source]#

Return the artist that this HandlerBase generates for the given original artist/handle.

Parameters:
legendLegend

The legend for which these legend artists are being created.

orig_handlematplotlib.artist.Artist or similar

The object for which these legend artists are being created.

fontsizeint

The fontsize in pixels. The artists being created should be scaled according to the given fontsize.

handleboxmatplotlib.offsetbox.OffsetBox

The box which has been created to hold this legend entry's artists. Artists created in the legend_artist method must be added to this handlebox inside this method.

update_prop(legend_handle, orig_handle, legend)[source]#
class matplotlib.legend_handler.HandlerCircleCollection(yoffsets=None, sizes=None, **kwargs)[source]#

Handler for CircleCollections.

Parameters:
numpointsint

Number of points to show in legend entry.

yoffsetsarray of floats

Length numpoints list of y offsets for each point in legend entry.

**kwargs

Keyword arguments forwarded to HandlerNpoints.

create_collection(orig_handle, sizes, offsets, offset_transform)[source]#
class matplotlib.legend_handler.HandlerErrorbar(xerr_size=0.5, yerr_size=None, marker_pad=0.3, numpoints=None, **kwargs)[source]#

Handler for Errorbars.

Parameters:
marker_padfloat

Padding between points in legend entry.

numpointsint

Number of points to show in legend entry.

**kwargs

Keyword arguments forwarded to HandlerBase.

create_artists(legend, orig_handle, xdescent, ydescent, width, height, fontsize, trans)[source]#
get_err_size(legend, xdescent, ydescent, width, height, fontsize)[source]#
class matplotlib.legend_handler.HandlerLine2D(marker_pad=0.3, numpoints=None, **kwargs)[source]#

Handler for Line2D instances.

See also

HandlerLine2DCompound

An earlier handler implementation, which used one artist for the line and another for the marker(s).

Parameters:
marker_padfloat

Padding between points in legend entry.

numpointsint

Number of points to show in legend entry.

**kwargs

Keyword arguments forwarded to HandlerBase.

create_artists(legend, orig_handle, xdescent, ydescent, width, height, fontsize, trans)[source]#
class matplotlib.legend_handler.HandlerLine2DCompound(marker_pad=0.3, numpoints=None, **kwargs)[source]#

Original handler for Line2D instances, that relies on combining a line-only with a marker-only artist. May be deprecated in the future.

Parameters:
marker_padfloat

Padding between points in legend entry.

numpointsint

Number of points to show in legend entry.

**kwargs

Keyword arguments forwarded to HandlerBase.

create_artists(legend, orig_handle, xdescent, ydescent, width, height, fontsize, trans)[source]#
class matplotlib.legend_handler.HandlerLineCollection(marker_pad=0.3, numpoints=None, **kwargs)[source]#

Handler for LineCollection instances.

Parameters:
marker_padfloat

Padding between points in legend entry.

numpointsint

Number of points to show in legend entry.

**kwargs

Keyword arguments forwarded to HandlerBase.

create_artists(legend, orig_handle, xdescent, ydescent, width, height, fontsize, trans)[source]#
get_numpoints(legend)[source]#
class matplotlib.legend_handler.HandlerNpoints(marker_pad=0.3, numpoints=None, **kwargs)[source]#

A legend handler that shows numpoints points in the legend entry.

Parameters:
marker_padfloat

Padding between points in legend entry.

numpointsint

Number of points to show in legend entry.

**kwargs

Keyword arguments forwarded to HandlerBase.

get_numpoints(legend)[source]#
get_xdata(legend, xdescent, ydescent, width, height, fontsize)[source]#
class matplotlib.legend_handler.HandlerNpointsYoffsets(numpoints=None, yoffsets=None, **kwargs)[source]#

A legend handler that shows numpoints in the legend, and allows them to be individually offset in the y-direction.

Parameters:
numpointsint

Number of points to show in legend entry.

yoffsetsarray of floats

Length numpoints list of y offsets for each point in legend entry.

**kwargs

Keyword arguments forwarded to HandlerNpoints.

get_ydata(legend, xdescent, ydescent, width, height, fontsize)[source]#
class matplotlib.legend_handler.HandlerPatch(patch_func=None, **kwargs)[source]#

Handler for Patch instances.

Parameters:
patch_funccallable, optional

The function that creates the legend key artist. patch_func should have the signature:

def patch_func(legend=legend, orig_handle=orig_handle,
               xdescent=xdescent, ydescent=ydescent,
               width=width, height=height, fontsize=fontsize)

Subsequently the created artist will have its update_prop method called and the appropriate transform will be applied.

**kwargs

Keyword arguments forwarded to HandlerBase.

create_artists(legend, orig_handle, xdescent, ydescent, width, height, fontsize, trans)[source]#
class matplotlib.legend_handler.HandlerPathCollection(yoffsets=None, sizes=None, **kwargs)[source]#

Handler for PathCollections, which are used by scatter.

Parameters:
numpointsint

Number of points to show in legend entry.

yoffsetsarray of floats

Length numpoints list of y offsets for each point in legend entry.

**kwargs

Keyword arguments forwarded to HandlerNpoints.

create_collection(orig_handle, sizes, offsets, offset_transform)[source]#
class matplotlib.legend_handler.HandlerPolyCollection(xpad=0.0, ypad=0.0, update_func=None)[source]#

Handler for PolyCollection used in fill_between and stackplot.

create_artists(legend, orig_handle, xdescent, ydescent, width, height, fontsize, trans)[source]#
class matplotlib.legend_handler.HandlerRegularPolyCollection(yoffsets=None, sizes=None, **kwargs)[source]#

Handler for RegularPolyCollections.

Parameters:
numpointsint

Number of points to show in legend entry.

yoffsetsarray of floats

Length numpoints list of y offsets for each point in legend entry.

**kwargs

Keyword arguments forwarded to HandlerNpoints.

create_artists(legend, orig_handle, xdescent, ydescent, width, height, fontsize, trans)[source]#
create_collection(orig_handle, sizes, offsets, offset_transform)[source]#
get_numpoints(legend)[source]#
get_sizes(legend, orig_handle, xdescent, ydescent, width, height, fontsize)[source]#
update_prop(legend_handle, orig_handle, legend)[source]#
class matplotlib.legend_handler.HandlerStem(marker_pad=0.3, numpoints=None, bottom=None, yoffsets=None, **kwargs)[source]#

Handler for plots produced by stem.

Parameters:
marker_padfloat, default: 0.3

Padding between points in legend entry.

numpointsint, optional

Number of points to show in legend entry.

bottomfloat, optional
yoffsetsarray of floats, optional

Length numpoints list of y offsets for each point in legend entry.

**kwargs

Keyword arguments forwarded to HandlerNpointsYoffsets.

create_artists(legend, orig_handle, xdescent, ydescent, width, height, fontsize, trans)[source]#
get_ydata(legend, xdescent, ydescent, width, height, fontsize)[source]#
class matplotlib.legend_handler.HandlerStepPatch(xpad=0.0, ypad=0.0, update_func=None)[source]#

Handler for StepPatch instances.

create_artists(legend, orig_handle, xdescent, ydescent, width, height, fontsize, trans)[source]#
class matplotlib.legend_handler.HandlerTuple(ndivide=1, pad=None, **kwargs)[source]#

Handler for Tuple.

Parameters:
ndivideint, default: 1

The number of sections to divide the legend area into. If None, use the length of the input tuple.

padfloat, default: rcParams["legend.borderpad"] (default: 0.4)

Padding in units of fraction of font size.

**kwargs

Keyword arguments forwarded to HandlerBase.

create_artists(legend, orig_handle, xdescent, ydescent, width, height, fontsize, trans)[source]#
matplotlib.legend_handler.update_from_first_child(tgt, src)[source]#