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()
Autres tests :
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=[] x=-5 # Valeur de départ for i in range(21) : liste_x.append(x) x+=0.5 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()
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()
Tester les fonctions placées en commentaire.
Matplotlib fonctionne avec les listes mais aussi avec les tableaux à une dimension
(ou vecteurs) de NumPy.
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 ×
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()