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:
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()
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()
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()
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')
Références
Liens | Site |
---|---|
matplotlib.pyplot.grid() | Matplotlib doc |
How do I draw a grid onto a plot in Python? | stackoverflow |
Matplotlib how to show logarithmically spaced grid lines at all ticks on a log-log plot? | stackoverflow |
How to add a grid line at a specific location in matplotlib plot? | stackoverflow |
Change grid interval and specify tick labels in Matplotlib | stackoverflow |
How to create major and minor gridlines with different linestyles in Python | stackoverflow |