5.2 Visualisation d'une ou plusieurs fonctions \(f(x)\)

Nous avons déjà eu l'occasion de créer un objet figure et de représenter plusieurs graphes de fonctions dans cette figure :

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: