Comment changer les valeurs sur les axes d'une figure imshow sous matplotlib ?

Published: 24 mai 2019

DMCA.com Protection Status

Exemples de comment changer les valeurs sur les axes d'une figure imshow sous matplotlib

Soit une simple figure tracée en utilisant la fonction imshow de matplotlib:

import numpy as np
import matplotlib.pyplot as plt

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)

plt.colorbar()

plt.title('How to change imshow axis values with matplotlib ?', fontsize=8)

plt.savefig("imshow_change_values_on_axis_01.png", bbox_inches='tight')
plt.close()

Par défaut avec imshow les valeurs sur les axes correspondent aux indices du tableau 2d en entrée (ici nommé z).

Comment changer les valeurs sur les axes d'une figure imshow sous matplotlib ?
Comment changer les valeurs sur les axes d'une figure imshow sous matplotlib ?

Changer les valeurs sur les axes avec l'option extent

Pour changer les valeurs sur les axes en peut ajouter l'option extent:

extent = [x_min , x_max, y_min , y_max]

par exemple:

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

Comment changer les valeurs sur les axes d'une figure imshow sous matplotlib ?
Comment changer les valeurs sur les axes d'une figure imshow sous matplotlib ?

Personnaliser les valeurs sur les axes avec set_xticks() ou set_yticks()

Une autre solution est de personnaliser les valeurs sur les axes avec set_xticks() ou set_yticks(). Par exemple, si vous ajoutez l'option extent=[-1,1,-1,1] en peut alors remplacer les valeurs [-0.75,-0.25,0.25,0.75] par ['A2', 'B2', 'C2', 'D2']:

fig, ax = plt.subplots(1,1)

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

x_label_list = ['A2', 'B2', 'C2', 'D2']

ax.set_xticks([-0.75,-0.25,0.25,0.75])

ax.set_xticklabels(x_label_list)

fig.colorbar(img)

Comment changer les valeurs sur les axes d'une figure imshow sous matplotlib ?
Comment changer les valeurs sur les axes d'une figure imshow sous matplotlib ?

Sans l'option extent, il faut alors indiquer les indices correspondants comme ceci

fig, ax = plt.subplots(1,1)

img = ax.imshow(z)

x_label_list = ['A1', 'B1', 'C1', 'D1']

ax.set_xticks([20,40,60,80])

ax.set_xticklabels(x_label_list)

fig.colorbar(img)

Comment changer les valeurs sur les axes d'une figure imshow sous matplotlib ?
Comment changer les valeurs sur les axes d'une figure imshow sous matplotlib ?

Un autre exemple en modifiant les valeurs sur l'axe des x et y:

fig, ax = plt.subplots(1,1)

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

x_label_list = ['x1', 'x2', 'x3', 'x4']
y_label_list = ['y1', 'y2', 'y3', 'y4']

ax.set_xticks([-0.75,-0.25,0.25,0.75])
ax.set_yticks([-0.75,-0.25,0.25,0.75])

ax.set_xticklabels(x_label_list)
ax.set_yticklabels(y_label_list)

fig.colorbar(img)

Comment changer les valeurs sur les axes d'une figure imshow sous matplotlib ?
Comment changer les valeurs sur les axes d'une figure imshow sous matplotlib ?

Code python sur comment changer les valeurs sur les axes d'une figure imshow

import numpy as np
import matplotlib.pyplot as plt

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)

plt.colorbar()

plt.title('How to change imshow axis values with matplotlib ?', fontsize=8)

plt.savefig("imshow_change_values_on_axis_01.png", bbox_inches='tight')
plt.close()

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

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

plt.colorbar()

plt.title('How to change imshow axis values with matplotlib ?', fontsize=8)

plt.savefig("imshow_change_values_on_axis_02.png", bbox_inches='tight')
plt.close()

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

fig, ax = plt.subplots(1,1)

img = ax.imshow(z)

x_label_list = ['A1', 'B1', 'C1', 'D1']

ax.set_xticks([20,40,60,80])

ax.set_xticklabels(x_label_list)

fig.colorbar(img)

plt.title('How to change imshow axis values with matplotlib ?', fontsize=8)

plt.savefig("imshow_change_values_on_axis_03.png", bbox_inches='tight')
plt.close()

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

fig, ax = plt.subplots(1,1)

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

x_label_list = ['A2', 'B2', 'C2', 'D2']

ax.set_xticks([-0.75,-0.25,0.25,0.75])

ax.set_xticklabels(x_label_list)

fig.colorbar(img)

plt.title('How to change imshow axis values with matplotlib ?', fontsize=8)

plt.savefig("imshow_change_values_on_axis_04.png", bbox_inches='tight')
plt.close()

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

fig, ax = plt.subplots(1,1)

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

x_label_list = ['x1', 'x2', 'x3', 'x4']
y_label_list = ['y1', 'y2', 'y3', 'y4']

ax.set_xticks([-0.75,-0.25,0.25,0.75])
ax.set_yticks([-0.75,-0.25,0.25,0.75])

ax.set_xticklabels(x_label_list)
ax.set_yticklabels(y_label_list)

fig.colorbar(img)

plt.title('How to change imshow axis values with matplotlib ?', fontsize=8)

plt.savefig("imshow_change_values_on_axis_05.png", bbox_inches='tight')
plt.close()

Références

Image

of