class DiscreteNorm(levels, norm=None, unique=None, step=None, clip=False, descending=False)[source]

Bases: matplotlib.colors.BoundaryNorm

Meta-normalizer that discretizes the possible color values returned by arbitrary continuous normalizers given a list of level boundaries.

  • levels (list of float) – The level boundaries.

  • norm (Normalize, optional) – The normalizer used to transform levels and data values passed to __call__ before discretization. The vmin and vmax of the normalizer are set to the minimum and maximum values in levels.

  • unique ({'neither', 'both', 'min', 'max'}, optional) – Which out-of-bounds regions should be assigned unique colormap colors. Possible values are equivalent to the extend values. The normalizer needs this information so it can ensure the colorbar always spans the full range of colormap colors. Internally, proplot sets this automatically depending on whether the colormap is cyclic and whether “extreme” colors were designated separately using set_under and/or set_over.

  • step (float, optional) – The intensity of the transition to out-of-bounds colors as a fraction of the adjacent step between in-bounds colors. Internally, proplot sets this to 0.5 for cyclic colormaps and 1 for all other colormaps.

  • clip (bool, optional) – Whether to clip values falling outside of the level bins. This only has an effect on lower colors when unique is 'min' or 'both', and on upper colors when unique is 'max' or 'both'.

  • descending (bool, optional) – Whether the levels are meant to be descending. This will cause the colorbar axis to be reversed when it is drawn with a ScalarMappable that uses this normalizer.


This normalizer also makes sure that levels always span the full range of colors in the colormap, whether extend is set to 'min', 'max', 'neither', or 'both'. By default, when extend is not 'both', matplotlib cuts off the most intense colors (reserved for “out of bounds” data), even though they are not being used. Note that this means using a diverging colormap with extend='max' or extend='min' will shift the central color. But that is very strange usage anyway… so please just don’t do that :)

Attributes Summary


Whether the colormap levels are descending.

Methods Summary

__call__(value[, clip])

Normalize data values to 0-1.


Raise an error.