matplotlib.category#

Plotting of string "category" data: plot(['d', 'f', 'a'], [1, 2, 3]) will plot three points with x-axis values of 'd', 'f', 'a'.

See Plotting categorical variables for an example.

The module uses Matplotlib's matplotlib.units mechanism to convert from strings to integers and provides a tick locator, a tick formatter, and the UnitData class that creates and stores the string-to-integer mapping.

class matplotlib.category.StrCategoryConverter[source]#

Bases: ConversionInterface

static axisinfo(unit, axis)[source]#

Set the default axis ticks and labels.

Parameters:
unitUnitData

object string unit information for value

axisAxis

axis for which information is being set

Note

axis is not used

Returns:
AxisInfo

Information to support default tick labeling

static convert(value, unit, axis)[source]#

Convert strings in value to floats using mapping information stored in the unit object.

Parameters:
valuestr or iterable

Value or list of values to be converted.

unitUnitData

An object mapping strings to integers.

axisAxis

The axis on which the converted value is plotted.

Note

axis is unused.

Returns:
float or ndarray[float]
static default_units(data, axis)[source]#

Set and update the Axis units.

Parameters:
datastr or iterable of str
axisAxis

axis on which the data is plotted

Returns:
UnitData

object storing string to integer mapping

class matplotlib.category.StrCategoryFormatter(units_mapping)[source]#

Bases: Formatter

String representation of the data at every tick.

Parameters:
units_mappingdict

Mapping of category names (str) to indices (int).

format_ticks(values)[source]#

Return the tick labels for all the ticks at once.

class matplotlib.category.StrCategoryLocator(units_mapping)[source]#

Bases: Locator

Tick at every integer mapping of the string data.

Parameters:
units_mappingdict

Mapping of category names (str) to indices (int).

tick_values(vmin, vmax)[source]#

Return the values of the located ticks given vmin and vmax.

Note

To get tick locations with the vmin and vmax values defined automatically for the associated axis simply call the Locator instance:

>>> print(type(loc))
<type 'Locator'>
>>> print(loc())
[1, 2, 3, 4]
class matplotlib.category.UnitData(data=None)[source]#

Bases: object

Create mapping between unique categorical values and integer ids.

Parameters:
dataiterable

sequence of string values

update(data)[source]#

Map new values to integer identifiers.

Parameters:
dataiterable of str or bytes
Raises:
TypeError

If elements in data are neither str nor bytes.