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()
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()
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()
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()
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()