Il s'agit ici de tracer des graphiques à l'aide de deux bibliothèques :
Les lignes de code seront écrites avec l'EDI (Environnement de Développement Intégré) EduPython.
L'exemple basique ci-dessous utilise le module Pyplot de la bibliothèque Matplotlib.
# Importation de la bibliothèque import matplotlib.pyplot as plt # Coordonnées des points liste_x = [1, 2, 4, 5, 7, 8] liste_y = [1, 6, 9, 15, 12, 2] # Affichage de la figure plt.plot(liste_x, liste_y) plt.show()
Cet exemple se complète avec le titre, la grille, la couleur...
import matplotlib.pyplot as plt
liste_x = [1, 2, 4, 5, 7, 8]
liste_y = [1, 6, 9, 15, 12, 2]
plt.title("Exemple de graphique") # plt.figure("Exemple de graphique")
plt.xlabel("L'axe horizontal")
plt.ylabel("L'axe vertical")
plt.grid()
plt.plot(liste_x, liste_y, marker='o', color='#00ff00')
plt.show()
marker: 'x', '+', '*', 'H', 's'.
Ci-dessous, des listes sont initialisées puis complétées au fur et à mesure. Les coordonnées des points sont calculées par Python.
import matplotlib.pyplot as plt liste_x=[] for i in range(21) : x=-5+0.5*i liste_x.append(x) liste_y=[] for x in liste_x : y=x**2 # y=x**3 y=2*x-3 liste_y.append(y) plt.plot(liste_x, liste_y, marker='o') plt.show()
Tester les fonctions placées en commentaire.
L'utilisation de listes en compréhension
donne le même résultat avec une syntaxe
bien plus courte.
import matplotlib.pyplot as plt liste_x=[-5+0.5*i for i in range(21)] liste_y=[x**2 for x in liste_x] plt.plot(liste_x, liste_y, marker='o') plt.show()
Le même résultat s'obtient avec une seule répétition se passant de la variable i :
import matplotlib.pyplot as plt liste_x=[] liste_y=[] x=-5 while x<=5 : liste_x.append(x) y=x**2 # y=x**3 y=2*x-3 liste_y.append(y) x+=0.5 plt.plot(liste_x, liste_y, marker='o') plt.show()
Matplotlib fonctionne avec les listes mais aussi avec les tableaux à une dimension
(ou vecteurs) de NumPy. Les calculs s'effectuent bien plus rapidement.
Les abscisses s'obtiennent alors avec les méthodes linspace()
ou arange()
de NumPy.
import matplotlib.pyplot as plt import numpy as np tab_x=np.linspace(-5,5,21) # tab_x=np.arange(-5,5.5,0.5) tab_y=tab_x**2 # tab_y=tab_x**3 tab_y=np.sin(tab_x) tab_y=(25-tab_x**2)**0.5 plt.plot(tab_x, tab_y, marker='o') plt.show()
Tester les fonctions placées en commentaire.
Obtenir le résultat ci-dessous :
Cisco Systems, fabricant de routeurs et autres matériels pour réseaux, propose ce tableau montrant l'évolution du trafic mensuel sur Internet :
| Année | 2017 | 2018 | 2019 | 2020 | 2021 | 2022 |
|---|---|---|---|---|---|---|
| Volume (Eo) | 122 | 156 | 201 | 254 | 319 | 396 |
Ces valeurs se retrouvent avec la formule :
Volume = 5 × (Année - 2014)2 + 76
Tracer l'histogramme montrant l'évolution du trafic sur Internet :
L'évolution annuelle du nombre d'adresses IPv4 disponibles au RIPE-NCC, en millions, est donnée par la formule :
Nombre = 10 × [rac]2020,25 - Année[/rac] - 5
A l'aide de NumPy, tracer la courbe montrant l'évolution du nombre d'adresses IPv4 disponibles, pour les années allant de 2015 à 2020.
De manière très simplifiée, la construction d'une maison passe par les étapes :
Un diagramme de Gantt visualise ces tâches.
import matplotlib.pyplot as plt
travaux = ["Fondations", "Murs", "Toit"]
debut = [0, 5, 8]
fin = [1, 8, 12]
# Inversion des listes, facultatif
travaux = list(reversed(travaux))
debut = list(reversed(debut))
fin = list(reversed(fin))
# Histogrammes horizontaux
plt.barh(travaux, fin, color='#669900')
plt.barh(travaux, debut, color='#ffffff')
# Ajout de titres pour l'axe vertical et la figure
plt.xlabel("Jours")
plt.title("Planification des travaux")
# Affichage du diagramme de Gantt
plt.show()
Compléter ce diagramme de Gantt sachant que les menuiseries extérieures :
Tracer, sur un même graphique, les courbes de y1 et y2 en fonction de x.
Tester le programme ci-dessous puis l'adapter à d'autres équations, par exemple :
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
# Valeurs pour x, y et z
x = np.linspace(-10, 10, 100)
y = np.linspace(-10, 10, 100)
x, y = np.meshgrid(x, y)
z = x**2 + y**2
# Création de la figure 3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(x, y, z, cmap='viridis')
# Ajout de qualificatifs aux axes
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
# Affichage du graphique
plt.show()