PYTHON
TRACER DES GRAPHIQUES

Objectif

Il s'agit ici de tracer des graphiques à l'aide de deux bibliothèques :

Comprendre

Coordonnées connues

L'exemple ci-dessous utilise le module Pyplot de la bibliothèque Matplotlib. Les labels pour les axes, le titre et la grille sont facultatifs.

# 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]

# Labels pour les axes, titre et grille
plt.xlabel("L'axe horizontal")
plt.ylabel("L'axe vertical")
plt.title("Exemple de graphique")
plt.grid()

# Affichage de la figure
plt.plot(liste_x, liste_y, marker='o', color='#00ff00')
plt.show()

A tester également :

Coordonnées calculées par Python

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.

Coordonnées calculées par NumPy

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.

Pratiquer

Polygone

Obtenir le résultat ci-dessous :

Evolution du trafic

Cisco Systems, fabricant de routeurs et autres matériels pour réseaux, propose ce tableau montrant l'évolution du trafic mensuel sur Internet :

Année201720182019202020212022
Volume (Eo)122156201254319396

Ces valeurs se retrouvent avec la formule :

Volume = 5 × (Année - 2014)2 + 76

Tracer l'histogramme montrant l'évolution du trafic sur Internet :

Raréfaction des adresses IPv4

L'évolution annuelle du nombre d'adresses IPv4 disponibles au RIPE-NCC, en millions, est donnée par la formule :

Nombre = 10 × 2020,25 - Année - 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.

Approfondir

Diagramme de Gantt

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 :

Deux courbes sur un même graphique

Tracer, sur un même graphique, les courbes de y1 et y2 en fonction de x.

Cercle bleu

Obtenir le résultat ci-dessous :