Comment ajouter une grille sur une figure avec Matplotlib ?

Published: 15 août 2014

DMCA.com Protection Status

Exemples de comment ajouter une grille sur une figure avec matplotlib:

Avec la fonction grid()

Avec matplotlib il est possible de rajouter une grille de fond sur votre figure en utilisant la fonction grid (voir la documentation de matplotlib matplotlib.pyplot.grid() pour connaitre l'ensemble des arguments possibles). Exemple simple:

Comment ajouter une grille sur une figure avec Matplotlib ?
Comment ajouter une grille sur une figure avec Matplotlib ?

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-5,5, .01)
y = np.sin(2*np.pi*x)

plt.xlim(-5,5)
plt.ylim(-1.5,1.5)

plt.plot(x,y)

plt.grid()

plt.show()

Vous pouvez également mettre uniquement une grille correspondante à un axe donnée (par exemple plt.grid(axis='y') pour avoir avoir uniquement des lignes horizontales). Il est possible aussi de mettre une grille dans le cas d'une échelle logarithmique (voir ici un exemple).

Personnaliser la grille d'une figure

On peut aussi personnaliser la grille avec les fonctions set_xticks et set_yticks:

import matplotlib.pyplot as plt
import numpy as np


fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

x_min = 0
x_max = 10.0

y_min = -1.5
y_max = 1.5

x = np.arange(x_min, x_max, .01)
y = np.sin(np.pi*x)

plt.xlim(x_min,x_max)
plt.ylim(y_min,y_max)

plt.plot(x,y)

grid_x_ticks = np.arange(x_min, x_max, 0.2)
grid_y_ticks = np.arange(y_min, y_max, 0.2)

ax.set_xticks(grid_x_ticks , minor=True)
ax.set_yticks(grid_y_ticks , minor=True)

ax.grid(which='both')

ax.grid(which='minor', alpha=0.2, linestyle='--')

plt.title('How to add a grid on a figure in matplotlib ?', fontsize=8)

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

plt.close()

Comment ajouter une grille sur une figure avec Matplotlib ?
Comment ajouter une grille sur une figure avec Matplotlib ?

Un autre exemple avec ici une grille adaptée à la fonction sinus:

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

x_min = 0
x_max = 10.0

y_min = -1.5
y_max = 1.5

x = np.arange(x_min, x_max, .01)
y = np.sin(x)

plt.xlim(x_min,x_max)
plt.ylim(y_min,y_max)

plt.plot(x,y)

grid_x_ticks_minor = np.arange(x_min, x_max, 0.2 )
grid_x_ticks_major = np.arange(x_min, x_max, np.pi/2.0 )

ax.set_xticks(grid_x_ticks_minor, minor=True)
ax.set_xticks(grid_x_ticks_major)

grid_y_ticks_minor = np.arange(y_min, y_max, 0.2 )
grid_y_ticks_major = [-1.0, 0.0, 1.0]

ax.set_yticks(grid_y_ticks_minor, minor=True)
ax.set_yticks(grid_y_ticks_major)

ax.set_yticks(grid_y_ticks , minor=True)

ax.grid(which='both', linestyle='--')

ax.grid(which='minor', alpha=0.2)

plt.title('How to add a grid on a figure in matplotlib ?', fontsize=8)

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

plt.close()

Comment ajouter une grille sur une figure avec Matplotlib ?
Comment ajouter une grille sur une figure avec Matplotlib ?

Cas d'une échelle logarithmique

Prenons par exemple la fonction exponentielle:

import matplotlib.pyplot as plt
import numpy as np

x_min = 0
x_max = 10.0

x = np.arange(x_min, x_max, .01)
y = np.exp(x)

plt.plot(x,y)

plt.xlim(x_min,x_max)
plt.ylim(np.exp(x_min),np.exp(x_max))

plt.grid(True,which="both", linestyle='--')

plt.title('How to add a grid on a figure in matplotlib ?', fontsize=8)

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

Comment ajouter une grille sur une figure avec Matplotlib ?
Comment ajouter une grille sur une figure avec Matplotlib ?

Pour avoir, par exemple l'axe des ordonnées en échelle logarithmique on peut utiliser plt.yscale('log'):

import matplotlib.pyplot as plt
import numpy as np

x_min = 0
x_max = 10.0

x = np.arange(x_min, x_max, .01)
y = np.exp(x)

plt.plot(x,y)

plt.xlim(x_min,x_max)
plt.ylim(np.exp(x_min),np.exp(x_max))

plt.yscale('log')

plt.grid(True,which="both", linestyle='--')

plt.title('How to add a grid on a figure in matplotlib ?', fontsize=8)

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

Comment ajouter une grille sur une figure avec Matplotlib ?
Comment ajouter une grille sur une figure avec Matplotlib ?

Références

Image

of