#-*-coding:utf-8-*-
#####################################################################
#########  Realisationon d'un graphique   ###########################
########  A partir de mesures experimentales    #####################
###################  Pyth3.4  Mars 2016 #############################
#####################################################################
#####################   J.B.  #######################################
#############################################################################

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import linregress
plt.close("all") # pour fermer les fenêtres graphiques

## Recuperation du fichiers de points
# Mettre le fichier de donnees dans le même dossier

def recup(nomfichier, colonnes, sep = ";"):
    """
    nomfichier : fichier texte .txt ou .csv
    colonnes : type int, nbre de colonnes à recuperer
    sep : type str, separateur de colonnes, ";" par defaut
    RETOUR : type array, tableau de donnees.
    """
    L = [ [] for _ in range(colonnes)] #initialisaition de la liste de donnees
    with open(nomfichier, "r") as contenu:
        for ligne in contenu:
            try : #pour eviter les entêtes
                ligne = ligne.replace(',','.') #  transforme les , en .
                ligne = ligne.split(sep) #separe les valeurs
                for i in range(colonnes):
                    L[i].append(float(ligne[i]) ) #remplissage et conversion en flottant
            except: ValueError
    return np.array(L) # conversion en tableau

## Extraction des points experimentaux
nomfichier ='TP_frottement_resultats.csv'
Donnees = recup(nomfichier, 3, sep = ";") #recuperation de 3 colonnes
t = Donnees[0]*0.1 #abscisses
X = Donnees[1] #abscisses
Y = Donnees[2]-2 #ordonnees

## Manipulation des donnees
V = []
accel = []
n = len(X)
for k in range (1,n-1):
    vitesse = (X[k+1]-X[k-1]) /(t[k+1] - t[k-1])
    V.append(vitesse)
    a = (X[k+1] + X[k-1]-2*X[k]) /(t[k+1] - t[k-1])**2
    accel.append(a)

## representation graphique
# t = t[:-1]  # elimination du dernier element
plt.figure(figsize=(10,8))
plt.gcf().subplots_adjust( wspace = .5, hspace = .5)
# Trajectoire
plt.subplot(221)
plt.plot(t,X)
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)
plt.xlabel(" t (s)",fontsize = 14)
plt.ylabel("$X (m)$",fontsize = 14)
plt.title("position",fontsize = 16)
# vitesse instantanee
plt.subplot(222)
plt.plot(t[1:-1],V)
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)
plt.xlabel(" t (s) ",fontsize = 14)
plt.ylabel(" v $(m.s^{-1})$",fontsize = 14)
plt.title("Vitesse instantanee",fontsize = 16)
# acceleration
plt.subplot(212)
plt.plot(t[1:-1],accel)
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)
plt.xlabel(" t (s) ",fontsize = 14)
plt.ylabel(" a ($m.s^{-2}$)",fontsize = 14)
plt.title("Acceleration ",fontsize = 16)
plt.show()