Tracer un nuage de points¶

Les objectifs sont les suivants:

  • Tracer un nuage de points en python à l'aide des instructions de Matplotlib.pyplot.
  • Légender le schéma
  • Paramétrer les axes
  • Effectuer une modélisation par une régression linéaire

TL;DR¶

Copier-Coller-Adapter ce morceau de code.

In [5]:
# Import des librairies
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

# Tableaux des valeurs mesurés
x = np.array([0,100,150,200,250,300,350])
y = np.array([0,1.192,1.742,2.308,2.697,3.367,3.811])

# Taille du tracé
plt.rcParams['figure.figsize'] = [8,6]

# Titres et axes
plt.title("Influence du volume immergé sur la valeur de la poussée d’Archimède")
plt.xlabel("Volume immergé (mL)")
plt.ylabel("Valeur de π (N)")

# Limites des axes (min,max)
plt.xlim(-50,400)
plt.ylim(-1,5)

# Création d'un système d'axes appelé "axes"
axes = plt.gca()
axes.spines['left'].set_position('zero')
axes.spines['bottom'].set_position('zero')
axes.spines['right'].set_color('none')
axes.spines['top'].set_color('none')

# Regression linéaire
regression = stats.linregress(x, y)
a = regression.slope
b = regression.intercept
r_carre = regression.rvalue**2

# Tracé du modèle
plt.plot(x, a*x + b, 'teal', label='y = %.3f x + %.3f | R² = %.6f' %(a, b,r_carre))
# Tracé du nuage
plt.plot(x, y, 'C1 o', label='Mesures')
plt.legend()
# Affichage
plt.show()
No description has been provided for this image

Détails¶

Tracé par défaut¶

In [6]:
# Import des librairies
import matplotlib.pyplot as plt
import numpy as np

# Listes des valeurs mesurés
x = np.array([0,100,150,200,250,300,350])
y = np.array([0,1.192,1.742,2.308,2.697,3.367,3.811])

# Taille du tracé
plt.rcParams['figure.figsize'] = [8,6] # [Largeur, Hauteur]

# Tracé du nuage
plt.plot(x,y,'ro',label='Étiquette utile si plusieurs nuages se superposent')
plt.legend() # Pour afficher les étiquettes
# Affichage
plt.show()
No description has been provided for this image

Légender les axes et donner un titre¶

In [7]:
# Titres et axes
plt.title("Influence du volume immergé sur la valeur de la poussée d’Archimède")
plt.xlabel("Volume immergé (mL)")
plt.ylabel("Valeur de π (N)")

# Tracé du nuage
plt.plot(x,y,'ro')
# Affichage
plt.show()
No description has been provided for this image

Paramétrer les axes¶

In [8]:
# Limites des axes (min,max)
plt.xlim(-50,400)
plt.ylim(-1,5)

# Création d'un système d'axes appelé "axes"
axes = plt.gca()
# Positionnement des axes Gauche et Bas pour qu'ils se croisent en (0,0)
# Par défaut, ils se placent sur les bords de la figure
axes.spines['left'].set_position('zero')
axes.spines['bottom'].set_position('zero')
# Effacement des bords Haut et Droit 
axes.spines['right'].set_color('none')
axes.spines['top'].set_color('none')

# Tracé du nuage
plt.plot(x,y,'ro')
# Affichage
plt.show()
No description has been provided for this image

Régression linéaire¶

In [9]:
# Import de la librairie
from scipy import stats

# linregress renvoie 5 valeurs sous forme de tuple : slope, intercept, rvalue, pvalue, sterr
regression = stats.linregress(x, y)
# On récupère :
a = regression.slope # coefficient directeur
b = regression.intercept # ordonnée à l'origine
r_carre = regression.rvalue**2 # Coefficient de détermination

# Tracé du modèle
plt.plot(x, a*x + b, 'r', label='y = %.3f x + %.3f | R² = %.6f' %(a, b,r_carre))
# Tracé du nuage
plt.plot(x, y, 'o', label='Mesures')
plt.legend()
# Affichage
plt.show()
No description has been provided for this image