Comment mettre la barre de couleur (colorbar) en dessous avec matplotlib ?

Published: 01 février 2018

DMCA.com Protection Status

Exemple de comment mettre la barre de couleur (colorbar) en dessous avec matplotlib

Mettre la barre de couleur (colorbar) en dessous de la figure avec matplotlib

Avec matplotlib, pour mettre la barre de couleur (colorbar) en dessous de la figure le plus simple est d'utiliser l'argument orientation ="horizontal" dans la fonction matplotlib.pyplot.colorbar() (sources: 1 et 2), exemple:

Comment mettre la barre de couleur (colorbar) en dessous avec matplotlib Comment mettre la barre de couleur (colorbar) en dessous avec matplotlib
Comment mettre la barre de couleur (colorbar) en dessous avec matplotlib

#!/usr/bin/env python

import matplotlib.pyplot as plt
import numpy as np

#----------------------------------------------------------------------------------------#

def f(x,y):
    return (x+y)*np.exp(-5.0*(x**2+y**2))

x,y = np.mgrid[-1:1:100j, -1:1:100j]

z = f(x,y)

#----------------------------------------------------------------------------------------#

plt.imshow(z,extent=[-1,1,-1,1])

plt.colorbar(orientation="horizontal")

plt.title("Colorbar bottom position \n with matplotib")

plt.savefig('colorbar_positioning_01.png', format='png', bbox_inches='tight')
plt.show()
plt.close()

Ajuster la taille de la barre de couleur (colorbar) à la figure

Cependant la barre de couleur n'est généralement pas de la même taille. Pour réparer cela on peut utiliser la fonction make_axes_locatable (voir le précédant article intitulé: Adapter la taille de la colorbar au graphique (matplotlib)):

Comment mettre la barre de couleur (colorbar) en dessous avec matplotlib
Comment mettre la barre de couleur (colorbar) en dessous avec matplotlib

#!/usr/bin/env python

    from mpl_toolkits.axes_grid1 import make_axes_locatable

import matplotlib.pyplot as plt
import numpy as np

#----------------------------------------------------------------------------------------#

def f(x,y):
    return (x+y)*np.exp(-5.0*(x**2+y**2))

x,y = np.mgrid[-1:1:100j, -1:1:100j]

z = f(x,y)

#----------------------------------------------------------------------------------------#

fig, ax = plt.subplots(figsize=(4,4))

plt.title("Colorbar bottom position \n with matplotib")

im = plt.imshow(z,extent=[-1,1,-1,1])

divider = make_axes_locatable(ax)
cax = divider.new_vertical(size="5%", pad=0.5, pack_start=True)
fig.add_axes(cax)
fig.colorbar(im, cax=cax, orientation="horizontal")

plt.savefig('colorbar_positioning_03.png', format='png', bbox_inches='tight')
plt.show()
plt.close()

Note 01: pour modifier les labels sur la barre de couleur, voir l'article suivant: Modifier les labels d'une colorbar avec imshow sous matplotlib

Références

Image

of