PYTHON
TRACER DES GRAPHIQUES

Introduction

Matplotlib, une bibliothèque performante et populaire, permet de tracer des graphiques. Elle visualise les données sous de nombreuses formes.

Numpy, une bibliothèque dédiée aux mathématiques, manipule les matrices, les tableaux multidimensionnels. Elle effectue les calculs et les recherches de valeurs avec rapidité.

Expérimenter

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, deux 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=[]
liste_y=[]
x=-5
dx=1
while x<=5 :
  y=x**2
# y=x**3
# y=2*x-3
  liste_x.append(x)
  liste_y.append(y)
  x+=dx

plt.plot(liste_x, liste_y, marker='o')
plt.show()

Une fonction améliore la présentation :

import matplotlib.pyplot as plt

def y(x) :
  return x**2

liste_x=[]
liste_y=[]
x=-5
dx=1
while x<=5 :
  liste_x.append(x)
  liste_y.append(y(x))
  x+=dx

plt.plot(liste_x, liste_y, marker='o')
plt.show()

A tester également :

Coordonnées calculées par NumPy

La bibliothèque NumPy effectue les calculs beaucoup plus rapidement que Python. Elle manipule les tableaux. Or, Matplotlib fonctionne aussi bien avec les listes que les tableaux. Les abscisses s'obtiennent avec les méthodes linspace() ou arange() de NumPy.

import matplotlib.pyplot as plt
import numpy as np

tab_x=np.linspace(-5,5,11)
# tab_x=np.linspace(-5,5,30)
# tab_x=np.arange(-5,6,1)
tab_y=tab_x**2
# tab_y=tab_x**3
# tab_y=np.sin(3*tab_x)
# tab_y=(4-tab_x**2)**0.5

plt.plot(tab_x, tab_y, marker='o')
plt.show()

Avec une fonction :

import matplotlib.pyplot as plt
import numpy as np

def y(x) :
  return x**2

tab_x=np.linspace(-5,5,11)
tab_y=y(tab_x)

plt.plot(tab_x, tab_y, marker='o')
plt.show()

A tester également :

Programmer

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 indiquant 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

Travail demandé :

  1. Expliquer ce que signifie Eo, l'unité de volume.
  2. A l'aide du tableau, tracer l'histogramme montrant l'évolution du trafic sur Internet.
  3. A partir de la formule, en calculant les coordonnées par Python, tracer ce même histogramme.

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.

Pour aller plus loin

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.