Matplotlib - Multiplots

Dans ce chapitre, nous allons apprendre à créer plusieurs sous-graphiques sur le même canevas.

le subplot()La fonction renvoie l'objet axes à une position de grille donnée. La signature d'appel de cette fonction est -

plt.subplot(subplot(nrows, ncols, index)

Dans la figure courante, la fonction crée et renvoie un objet Axes, à l'index de position d'une grille de nrows par ncolsaxes. Les index vont de 1 à nrows * ncols, incrémentés dans l'ordre de la ligne principale. Les nrows, les ncols et les index sont tous inférieurs à 10. Les index peuvent également être donnés sous forme d'un seul, concaténé, à trois chiffres.

Par exemple, le sous-tracé (2, 3, 3) et le sous-tracé (233) créent tous deux des axes dans le coin supérieur droit de la figure actuelle, occupant la moitié de la hauteur de la figure et un tiers de la largeur de la figure.

La création d'un sous-tracé supprimera tout sous-tracé préexistant qui le chevauche au-delà du partage d'une limite.

import matplotlib.pyplot as plt
# plot a line, implicitly creating a subplot(111)
plt.plot([1,2,3])
# now create a subplot which represents the top plot of a grid with 2 rows and 1 column.
#Since this subplot will overlap the first, the plot (and its axes) previously 
created, will be removed
plt.subplot(211)
plt.plot(range(12))
plt.subplot(212, facecolor='y') # creates 2nd subplot with yellow background
plt.plot(range(12))

La ligne de code ci-dessus génère la sortie suivante -

La fonction add_subplot () de la classe figure n'écrasera pas le tracé existant -

import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot([1,2,3])
ax2 = fig.add_subplot(221, facecolor='y')
ax2.plot([1,2,3])

Lorsque la ligne de code ci-dessus est exécutée, elle génère la sortie suivante -

Vous pouvez ajouter un tracé d'insertion dans la même figure en ajoutant un autre objet axes dans le même canevas de figure.

import matplotlib.pyplot as plt
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
fig=plt.figure()
axes1 = fig.add_axes([0.1, 0.1, 0.8, 0.8]) # main axes
axes2 = fig.add_axes([0.55, 0.55, 0.3, 0.3]) # inset axes
y = np.sin(x)
axes1.plot(x, y, 'b')
axes2.plot(x,np.cos(x),'r')
axes1.set_title('sine')
axes2.set_title("cosine")
plt.show()

Lors de l'exécution de la ligne de code ci-dessus, la sortie suivante est générée -