Noter
Cliquez ici pour télécharger l'exemple de code complet
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 colorbar
a 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 ScalarMappable
sans 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' colorbar
appel 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' 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>
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")
<matplotlib.colorbar.Colorbar object at 0x7f2cfb5e67a0>
Barre de couleurs des intervalles discrets #
Le troisième exemple illustre l'utilisation de a
ListedColormap
qui génère une palette de couleurs à partir d'un ensemble de couleurs répertoriées, colors.BoundaryNorm
qui 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 ListedColormap
est 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',
)
<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()