Nous avons déjà eu l'occasion de
créer un objet figure
et de représenter plusieurs graphes de fonctions dans
cette figure :
plt.figure ;
plt.plot.
Tous les graphes partagent alors le même
objet axes.
Il est également possible de partager la figure créée en
\(m\times n\) emplacements (\(m\) lignes et \(n\) colonnes) destinés à
recevoir chacun un objet axes. Ce partage peut se faire en
invoquant
subplot(m,n,a), où a sélectionne le \(a\)ème
emplacement pour les instructions graphiques suivantes. La
numérotation se fait de gauche à droite et de haut en bas.
L'exemple ci-dessous consiste en une figure possédant \(7\)
subplot dont deux sont particuliers : le premier est un
''barplot'' horizontal et le second un ''scatter plot'' (''nuage de
points''). Dans ce dernier, nous utilisons NumPy pour créer un
ensemble de points au hasard.
import numpy as np
import matplotlib.pyplot as plt
# preparation du contenu du "barplot"
OS = ('Autres','Linux','MacOs','Windows')
h_pos = np.arange(len(OS))
pourcentage = [1,25,29,45]
# preparation du nuage de points
N = 110
x_s = 0.72*np.random.rand(N)
y_s = 0.72*np.random.rand(N)
# preparation du contenu des autres objets "axes"
def f(t,a):
return np.sin(a*t)
t = np.arange(0., 10., 0.01)
y = [] # liste de fonctions evaluees
for i in range(5):
y.append(f(t,i))
# creation de la figure
plt.figure(figsize=(14,8)) # taille de la (grande) figure (en pouces)
fig = plt.figure(1)
fig.suptitle('Un exemple de figure contenant 7 "subplots"')
# 1er objet "axes"
ax1 = plt.subplot(331)
ax1.barh(h_pos,pourcentage)
ax1.set_title('"horizontal bar plot"')
ax1.set_yticks(h_pos)
ax1.set_yticklabels(OS)
# 2eme objet "axes"
ax2 = plt.subplot(332)
ax2.scatter(x_s, y_s, marker='^', color='green')
ax2.set_title('"scatter plot"')
# 3eme objet "axes"
ax3 = plt.subplot(333)
ax3.plot(t, y[0])
# 4eme objet "axes"
ax4 = plt.subplot(323)
ax4.plot(t, y[1])
# 5eme objet "axes"
ax5 = plt.subplot(347)
ax5.plot(t, y[2])
# 6eme objet "axes"
ax6 = plt.subplot(348)
ax6.plot(t, y[3])
# 7eme objet "axes"
ax7 = plt.subplot(313)
ax7.plot(t, y[4])
ax7.set_xlabel('$t$')
ax7.set_ylabel('$f\,(t)$')
# affichage de la figure
plt.show()
Figure obtenue:
