Comment définir 0 comme point médian dans une colorbar divergente avec matplotlib ?

Published: 01 mai 2023

Tags: Python; Matplotlib;

DMCA.com Protection Status

Les colorbar divergentes sont couramment employées pour visualiser des données qui possèdent un point médian naturel, telles que la température ou la profondeur. Dans le cas où les données n'ont pas de point médian naturel, il est possible d'utiliser une palette de couleurs divergente en fixant la valeur 0 comme point médian.Example:

Colorbar divergente

Construisons un exemple simple en utilisant matplotlib avec une palette de couleurs divergente :

from pylab import figure, cm

import matplotlib.pyplot as plt

import numpy as np

x1_min = -10.0

x1_max = 5.0

x2_min = -2.0

x2_max = 2.0

x1, x2 = np.meshgrid(np.arange(x1_min,x1_max, 0.1), np.arange(x2_min,x2_max, 0.1))

plt.imshow(x1, origin='lower', cmap='seismic',extent=[x1_min,x1_max,x1_min,x1_max])

plt.title("How to set 0 as the middle point \n in a matplotlib diverging colormap ?" , fontsize=12)

plt.colorbar()

plt.savefig("matplotlib_set_0_middle_point_matpotlib_diverging_colormap_01.png", bbox_inches='tight',dpi=200, facecolor='white')

plt.show()

plt.close()

donne

Comment définir 0 comme point médian dans une palette de couleurs divergente avec matplotlib ?
Comment définir 0 comme point médian dans une palette de couleurs divergente avec matplotlib ?

zéro n'est pas le point central de la palette de couleurs.

Définir 0 comme point médian

Pour définir 0 comme point médian, une solution consiste à définir une nouvelle norme :

custom_norm=colors.TwoSlopeNorm(vmin=x1_min, vcenter=0., vmax=x1_max)

Exemple:

from pylab import figure, cm

import matplotlib.pyplot as plt

import numpy as np

from matplotlib import colors

x1_min = -10.0

x1_max = 5.0

x2_min = -2.0

x2_max = 2.0

x1, x2 = np.meshgrid(np.arange(x1_min,x1_max, 0.1), np.arange(x2_min,x2_max, 0.1))

custom_norm=colors.TwoSlopeNorm(vmin=x1_min, vcenter=0., vmax=x1_max)

plt.imshow(x1, origin='lower', cmap='seismic',extent=[x1_min,x1_max,x1_min,x1_max], norm=custom_norm)

plt.title("How to set 0 as the middle point \n in a matplotlib diverging colormap ?" , fontsize=12)

plt.colorbar()

plt.savefig("matplotlib_set_0_middle_point_matpotlib_diverging_colormap_02.png", bbox_inches='tight',dpi=200, facecolor='white')

plt.show()


plt.close()

Comment définir 0 comme point médian dans une palette de couleurs divergente avec matplotlib ?
Comment définir 0 comme point médian dans une palette de couleurs divergente avec matplotlib ?

Références

Liens Site
Choosing Colormaps in Matplotlib matplotlib.org
Colormap Normalization matplotlib.org
Image

of