import numpy as np  # numpy pour les maths , par exemple pour créer 256 valeurs régulièrement espacées entre 0 et 10 : np.linspace(0,10,256)
from time import sleep             # pour faire des "pauses" dans l'exécution du programme
import matplotlib.pyplot as plt # pour les graphiques

from scipy import stats



X = [0,1,2,3,4,5,6,7,8,9] #Liste des abscisses
Y = [3.03,9.11,15.2,21.3,27.4,33.6,39.6,45.7,51.7,57.9] #Liste des ordonnées


eq = stats.linregress (X,Y)
pente = eq[0] # pente
ordorig = eq[1] # ordonnée à l'origine
coeff2 = eq[2]**2 # coefficient de corrélation au carré r²

Xcalc = np.linspace(0,max(X) , 256) # création de points pour le tracé du modèle : on crée 256 points régulièrement espacés entre 0 et la valeur max de X
Ycalc = pente*Xcalc+ordorig # on fait calculer Y avec les paramètres de la régression linéaire pour ces valeurs de X
texte = 'equation de la droite  Y = '+str(round(pente,3))+' X + '+str(round(ordorig,3))+'     R² = '+str(round(coeff2,3)) # on affiche l'équation de la droite avec 3 décimales

print (texte)

plt.title('Etude des interferences') # titre du graphique
plt.scatter(X,Y, color ='r', marker = 'o') # On affiche les points de coordonnées (X,Y) avec des points rouges
plt.plot(Xcalc,Ycalc,color = 'b',label = texte) # Affichage de la courbe modélisée en bleu
plt.xlabel('k')       # nommer l'axe des abscisses
plt.ylabel('tk^4')       # nommer l'axe des ordonnéees
plt.ylim (min(Y),max(Y))  #limtes pour les axes avec les valeurs extrêmes de X et de Y
plt.xlim(min(X),max(X))
plt.legend()   # pour afficher les légendes (label)
plt.show()  #afficher le graphique (ne rien mettre dans la parenthèse)