Tutoriel sur les barres de couleurs personnalisées #

Ce tutoriel montre comment construire et personnaliser des barres de couleurs autonomes, c'est-à-dire sans tracé attaché.

Barres de couleurs personnalisées #

A colorbara besoin d'un objet "mappable" ( matplotlib.cm.ScalarMappable) (typiquement, une image) qui indique la palette de couleurs et la norme à utiliser. Afin de créer une barre de couleurs sans image attachée, on peut à la place utiliser une ScalarMappablesans données associées.

Barre de couleurs continue de base #

Ici, nous créons une barre de couleurs continue de base avec des graduations et des étiquettes.

Les arguments de l' colorbarappel sont les ScalarMappable (construits à l'aide des arguments norm et cmap ), les axes où la barre de couleurs doit être dessinée et l'orientation de la barre de couleurs.

Pour plus d'informations, consultez l' colorbarAPI.

import matplotlib.pyplot as plt
import matplotlib as mpl

fig, ax = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)

cmap = mpl.cm.cool
norm = mpl.colors.Normalize(vmin=5, vmax=10)

fig.colorbar(mpl.cm.ScalarMappable(norm=norm, cmap=cmap),
             cax=ax, orientation='horizontal', label='Some Units')
barre de couleur uniquement
<matplotlib.colorbar.Colorbar object at 0x7f2cdf4e94e0>

Barre de couleurs étendue avec échelle de couleurs continue #

Le deuxième exemple montre comment créer une barre de couleurs discrète basée sur une cmap continue. Avec l'argument mot-clé "extend", les couleurs appropriées sont choisies pour remplir l'espace colorimétrique, y compris les extensions :

fig, ax = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)

cmap = mpl.cm.viridis
bounds = [-1, 2, 5, 7, 12, 15]
norm = mpl.colors.BoundaryNorm(bounds, cmap.N, extend='both')

fig.colorbar(mpl.cm.ScalarMappable(norm=norm, cmap=cmap),
             cax=ax, orientation='horizontal',
             label="Discrete intervals with extend='both' keyword")
barre de couleur uniquement
<matplotlib.colorbar.Colorbar object at 0x7f2cfb5e67a0>

Barre de couleurs des intervalles discrets #

Le troisième exemple illustre l'utilisation de a ListedColormapqui génère une palette de couleurs à partir d'un ensemble de couleurs répertoriées, colors.BoundaryNormqui génère un index de palette de couleurs basé sur des intervalles discrets et des extrémités étendues pour afficher les couleurs de valeur "plus" et "moins". Plus et moins sont utilisés pour afficher des données en dehors de la plage normalisée [0, 1]. Ici, nous passons des couleurs sous forme de nuances de gris sous forme de chaîne codant un flottant dans la plage 0-1.

Si a ListedColormapest utilisé, la longueur du tableau des bornes doit être supérieure d'une unité à la longueur de la liste des couleurs. Les bornes doivent être croissantes de manière monotone.

Cette fois, nous passons des arguments supplémentaires à colorbar. Pour que les valeurs hors plage s'affichent sur la barre de couleurs sans utiliser le mot- clé extendcolors.BoundaryNorm avec , nous devons utiliser l' argument du mot-clé extend directement dans l'appel de la barre de couleurs. Ici, nous utilisons également l'argument d'espacement pour rendre la longueur de chaque segment de barre de couleur proportionnelle à son intervalle correspondant.

fig, ax = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)

cmap = (mpl.colors.ListedColormap(['red', 'green', 'blue', 'cyan'])
        .with_extremes(over='0.25', under='0.75'))

bounds = [1, 2, 4, 7, 8]
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)
fig.colorbar(
    mpl.cm.ScalarMappable(cmap=cmap, norm=norm),
    cax=ax,
    extend='both',
    ticks=bounds,
    spacing='proportional',
    orientation='horizontal',
    label='Discrete intervals, some other units',
)
barre de couleur uniquement
<matplotlib.colorbar.Colorbar object at 0x7f2cdf4e8430>

Barre de couleurs avec longueurs d'extension personnalisées #

Ici, nous illustrons l'utilisation d'extensions de barres de couleurs de longueur personnalisée, sur une barre de couleurs avec des intervalles discrets. Pour que la longueur de chaque extension soit identique à la longueur des couleurs intérieures, utilisez extendfrac='auto'.

fig, ax = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)

cmap = (mpl.colors.ListedColormap(['royalblue', 'cyan', 'yellow', 'orange'])
        .with_extremes(over='red', under='blue'))

bounds = [-1.0, -0.5, 0.0, 0.5, 1.0]
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)
fig.colorbar(
    mpl.cm.ScalarMappable(cmap=cmap, norm=norm),
    cax=ax,
    extend='both',
    extendfrac='auto',
    ticks=bounds,
    spacing='uniform',
    orientation='horizontal',
    label='Custom extension lengths, some other units',
)

plt.show()
barre de couleur uniquement

Galerie générée par Sphinx-Gallery