Tutorial sulle barre dei colori personalizzate #

Questo tutorial mostra come costruire e personalizzare barre colore autonome, cioè senza una trama allegata.

Barre colore personalizzate #

A colorbarnecessita di un oggetto "mappabile" ( matplotlib.cm.ScalarMappable) (tipicamente, un'immagine) che indichi la colormap e la norma da utilizzare. Per creare una barra dei colori senza un'immagine allegata, si può invece utilizzare ScalarMappablea senza dati associati.

Barra colori continua di base #

Qui creiamo una barra dei colori continua di base con segni di spunta ed etichette.

Gli argomenti della colorbarchiamata sono ScalarMappable (costruiti utilizzando gli argomenti norm e cmap ), gli assi in cui dovrebbe essere disegnata la barra dei colori e l'orientamento della barra dei colori.

Per ulteriori informazioni, vedere 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')
solo barra dei colori
<matplotlib.colorbar.Colorbar object at 0x7f2cdf4e94e0>

Barra dei colori estesa con scala di colori continua #

Il secondo esempio mostra come creare una barra di colore discreta basata su una cmap continua. Con l'argomento della parola chiave "extend" vengono scelti i colori appropriati per riempire lo spazio colore, comprese le estensioni:

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")
solo barra dei colori
<matplotlib.colorbar.Colorbar object at 0x7f2cfb5e67a0>

Barra dei colori degli intervalli discreti #

Il terzo esempio illustra l'uso di a ListedColormapche genera una mappa dei colori da un insieme di colori elencati, colors.BoundaryNormche genera un indice della mappa dei colori basato su intervalli discreti e estremità estese per mostrare i colori dei valori "sopra" e "sotto". Sopra e sotto vengono utilizzati per visualizzare i dati al di fuori dell'intervallo normalizzato [0, 1]. Qui passiamo i colori come sfumature di grigio come una stringa che codifica un float nell'intervallo 0-1.

Se ListedColormapviene utilizzato a, la lunghezza dell'array dei limiti deve essere maggiore di uno rispetto alla lunghezza dell'elenco dei colori. I limiti devono essere monotonicamente crescenti.

Questa volta passiamo ulteriori argomenti a colorbar. Affinché i valori fuori intervallo vengano visualizzati sulla barra dei colori senza utilizzare la parola chiave extend con colors.BoundaryNorm, dobbiamo utilizzare l' argomento della parola chiave extend direttamente nella chiamata alla barra dei colori. Qui usiamo anche l'argomento spaziatura per rendere la lunghezza di ogni segmento della barra dei colori proporzionale al suo intervallo corrispondente.

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',
)
solo barra dei colori
<matplotlib.colorbar.Colorbar object at 0x7f2cdf4e8430>

Barra dei colori con lunghezze di estensione personalizzate #

Qui illustriamo l'uso di estensioni della barra dei colori di lunghezza personalizzata, su una barra dei colori con intervalli discreti. Per rendere la lunghezza di ciascuna estensione uguale alla lunghezza dei colori interni, utilizzare 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()
solo barra dei colori

Galleria generata da Sphinx-Gallery