Graphiques multiples Matplotlib

Nous pouvons utiliser ce qui suit dans les méthodes pyplotsubplot()etsubplots()pour dessiner plusieurs sous-graphiques.

subplot()La méthode nécessite de spécifier une position lors du tracé,subplots()La méthode peut en générer plusieurs à la fois ; lors de l'appel, il vous suffit d'appeler le 'ax' de l'objet généré.

subplot

subplot(nrows, ncols, index, **kwargs)
subplot(pos, **kwargs)
subplot(**kwargs)
subplot(ax)

Les fonctions ci-dessus divisent toute la zone de tracé en nrows lignes et ncols colonnes, puis numérotent chaque sous-zone de gauche à droite et de haut en bas.1...NLa sous-zone en haut à gauche porte le numéro 1, la zone en bas à droite porte le numéro N, et la numérotation peut être définie via leindexparamètre.

Définissez numRows = 1, numCols = 2, c'est-à-dire dessinez le graphique sous forme de zone d'image 1x2, les coordonnées correspondantes sont :

(1, 1), (1, 2)

plotNum = 1, représentant la coordonnée (1, 1), c'est-à-dire le sous-graphique de la première ligne et de la première colonne.

plotNum = 2, représentant la coordonnée (1, 2), c'est-à-dire le sous-graphique de la première ligne et de la deuxième colonne.

Exemple

import matplotlib.pyplot as plt
import numpy as np

#graphique 1 :
xpoints = np.array([0, 6])
ypoints = np.array([0, 100])

plt.subplot(1, 2, 1)
plt.plot(xpoints,ypoints)
plt.title("graphique 1")

#graphique 2 :
x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])

plt.subplot(1, 2, 2)
plt.plot(x,y)
plt.title("graphique 2")

plt.suptitle("EXEMPLE test de sous-graphique")
plt.show()

Le résultat affiché est le suivant :

Définissez numRows = 2, numCols = 2, c'est-à-dire dessinez le graphique sous forme de zone d'image 2x2, les coordonnées correspondantes sont :

(1, 1), (1, 2)
(2, 1), (2, 2)

plotNum = 1, représentant la coordonnée (1, 1), c'est-à-dire le sous-graphique de la première ligne et de la première colonne.

plotNum = 2, représentant la coordonnée (1, 2), c'est-à-dire le sous-graphique de la première ligne et de la deuxième colonne.

plotNum = 3, représentant la coordonnée (2, 1), c'est-à-dire le sous-graphique de la deuxième ligne et de la première colonne.

plotNum = 4, représentant la coordonnée (2, 2), c'est-à-dire le sous-graphique de la deuxième ligne et de la deuxième colonne.

Exemple

import matplotlib.pyplot as plt
import numpy as np

#graphique 1 :
x = np.array([0, 6])
y = np.array([0, 100])

plt.subplot(2, 2, 1)
plt.plot(x,y)
plt.title("graphique 1")

#graphique 2 :
x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])

plt.subplot(2, 2, 2)
plt.plot(x,y)
plt.title("graphique 2")

#graphique 3 :
x = np.array([1, 2, 3, 4])
y = np.array([3, 5, 7, 9])

plt.subplot(2, 2, 3)
plt.plot(x,y)
plt.title("graphique 3")

#graphique 4 :
x = np.array([1, 2, 3, 4])
y = np.array([4, 5, 6, 7])

plt.subplot(2, 2, 4)
plt.plot(x,y)
plt.title("graphique 4")

plt.suptitle("EXEMPLE test de sous-graphique")
plt.show()

Le résultat affiché est le suivant :

subplots()

La syntaxe de la méthode subplots() est la suivante :

matplotlib.pyplot.subplots(nrows=1, ncols=1, *, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)
Description du paramètre :

  • nrows: la valeur par défaut est 1, définit le nombre de lignes du graphique.
  • ncols: la valeur par défaut est 1, définit le nombre de colonnes du graphique.
  • sharex, sharey: définit si les axes x et y partagent des attributs, la valeur par défaut est false, peut être défini sur 'none', 'all', 'row' ou 'col'. False ou none signifie que l'axe x ou l'axe y de chaque sous-graphique est indépendant ; True ou 'all' signifie que tous les sous-graphiques partagent l'axe x ou l'axe y ; 'row' définit chaque ligne de sous-graphiques pour partager un axe x ou un axe y ; 'col' définit chaque colonne de sous-graphiques pour partager un axe x ou un axe y.
  • squeeze: valeur booléenne, la valeur par défaut est True, indiquant que les dimensions supplémentaires sont supprimées de l'objet Axes renvoyé. Pour N*1 ou 1*N sous-graphiques, un tableau à 1 dimension est renvoyé ; pour N*M, N>1 et M>1, un tableau à 2 dimensions est renvoyé. Si défini sur False, aucune suppression n'est effectuée, et un tableau à 2 dimensions d'instances Axes est renvoyé, même s'il s'agit finalement de 1x1.
  • subplot_kw: facultatif, type dictionnaire. Transmettez les mots-clés du dictionnaire à add_subplot() pour créer chaque sous-graphique.
  • gridspec_kw: facultatif, type dictionnaire. Transmettez les mots-clés du dictionnaire au constructeur GridSpec pour créer des sous-graphiques placés dans une grille.
  • **fig_kw: transmettez des arguments nommés détaillés à la fonction figure().

Exemple

import matplotlib.pyplot as plt
import numpy as np

# Créer quelques données de test -- Figure 1
x = np.linspace(0, 2*np.pi, 400)
y = np.sin(x**2)

# Créer une figure et un sous-graphique -- Figure 2
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Graphique simple')

# Créer deux sous-graphiques -- Figure 3
f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
ax1.plot(x, y)
ax1.set_title('Axe Y partagé')
ax2.scatter(x, y)

# Créer quatre sous-graphiques -- Figure 4
fig, axs = plt.subplots(2, 2, subplot_kw=dict(projection="polar"))
axs[0, 0].plot(x, y)
axs[1, 1].scatter(x, y)

# Partager l'axe des x
plt.subplots(2, 2, sharex='col')

# Partager l'axe des y
plt.subplots(2, 2, sharey='row')

# Partager les axes x et y
plt.subplots(2, 2, sharex='all', sharey='all')

# Cela partage aussi les axes x et y
plt.subplots(2, 2, sharex=True, sharey=True)

# Créer une figure avec l'identifiant 10, la supprimer si elle existe déjà
fig, ax = plt.subplots(num=10, clear=True)

plt.show()

Voici quelques-uns des résultats d'affichage des graphiques :

Figure 1

Figure 2

Figure 3

Figure 4

Autres extensions