import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['figure.figsize'] = [10,7]
import pandas as pd
from scipy.optimize import curve_fit
mesures=pd.read_csv('mesures.csv',sep=';',decimal=',')
Mais la variable possède un type difficile à appréhender
type(mesures)
pandas.core.frame.DataFrame
Aussi, on la convertit en un tableau
mesures=pd.DataFrame(mesures).to_numpy()
## Affichage
mesures
array([[217, 13], [152, 18], [121, 23], [ 96, 28], [ 86, 33]])
Il est nécessaire de convertir la pression en Pa et le volume en m3.
mesures_converties = [[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]]
i=0
for i in range(5):
a=mesures[i,0]*1000
b=mesures[i,1]*1E-6
print (a,b,a*b)
mesures_converties[i][0] = a
mesures_converties[i][1] = b
mesures_converties[i][2] = a*b
mesures_converties
217000 1.3e-05 2.8209999999999997 152000 1.8e-05 2.736 121000 2.3e-05 2.783 96000 2.8e-05 2.688 86000 3.2999999999999996e-05 2.8379999999999996
[[217000, 1.3e-05, 2.8209999999999997], [152000, 1.8e-05, 2.736], [121000, 2.3e-05, 2.783], [96000, 2.8e-05, 2.688], [86000, 3.2999999999999996e-05, 2.8379999999999996]]
abscisses=[row[0] for row in mesures_converties]
ordonnees=[row[1] for row in mesures_converties]
plt.plot(abscisses,ordonnees,'r+')
plt.show()
mesures_volume_inverse=[[0,0],[0,0],[0,0],[0,0],[0,0]]
i=0
for i in range(5):
mesures_volume_inverse[i][0]=mesures_converties[i][0]
mesures_volume_inverse[i][1]=1/mesures_converties[i][1]
## Affichage
mesures_volume_inverse
[[217000, 76923.07692307692], [152000, 55555.555555555555], [121000, 43478.260869565216], [96000, 35714.28571428572], [86000, 30303.030303030308]]
On récupère chacunes des colonnes de valeurs.
abscisses=[row[0] for row in mesures_volume_inverse]
ordonnees=[row[1] for row in mesures_volume_inverse]
Puis on trace l'un en fonction de l'autre, avec des croix (+) rouges (r).
plt.plot(abscisses,ordonnees,'r+')
plt.show()
def modele(x, a, b):
return a*x+b
pop, covop = curve_fit(modele, abscisses, ordonnees)
aop, bop = pop
abscisse_modele=np.linspace(0, 220000, 300)
ordonnee_modele=modele(abscisse_modele,aop,bop)
# Création d'un système d'axes appelé "axes"
axes = plt.gca()
# On choisit les bornes.
axes.set_xlim(0, 220000)
axes.set_ylim(0, 80000)
# Les axes gauche et bas se croisent en (0,0)
axes.spines['left'].set_position('zero')
axes.spines['bottom'].set_position('zero')
# On efface les axes restants.
axes.spines['right'].set_color('none')
axes.spines['top'].set_color('none')
# On trace la courbe dans le nouveau système d'axes.
plt.plot(abscisses,ordonnees,'r+',label='data')
plt.plot(abscisse_modele, ordonnee_modele, label='fit')
plt.legend()
plt.show()