Nota
Fare clic qui per scaricare il codice di esempio completo
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 colorbar
necessita 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 ScalarMappable
a 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 colorbar
chiamata 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' colorbar
API.
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')
<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")
<matplotlib.colorbar.Colorbar object at 0x7f2cfb5e67a0>
Barra dei colori degli intervalli discreti #
Il terzo esempio illustra l'uso di a
ListedColormap
che genera una mappa dei colori da un insieme di colori elencati, colors.BoundaryNorm
che 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 ListedColormap
viene 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',
)
<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()