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).
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])
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)
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)
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)
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
Liens | Site |
---|---|
Change values on matplotlib imshow() graph axis | stackoverflow |
Manually-defined axis labels for Matplotlib imshow() | stackoverflow |
Matplotlib: personalize imshow axis | stackoverflow |
label matplotlib imshow axes with strings | stackoverflow |
matplotlib.axes.Axes.imshow | matplotlib.org |
how to use 'extent' in matplotlib.pyplot.imshow | stackoverflow |
origin and extent in imshow | matplotlib.org |
AttributeError while adding colorbar in matplotlib | stackoverflow |