Commit b1ed055b authored by hichbra's avatar hichbra

add script Raspberry + visualisation

parent 9704e0fc
# Python 2 (ajouter les cast en int() pour python 3)
# En cas de probleme de performance, n'afficher la date que toutes les 1000 valeurs => if i % 1000 == 0 : print(...)
# Version 1: Utilisable avec les fichiers des premiers tests, ou le champ "temps" est ecrit avec une date en secondes
# UTILISATION
# sans argument = Toutes les moules
# avec argument =>
# 0 = moule A0
# 1 = moule A1
# 2 = moule A2
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib
import csv
import sys
import datetime
x = []
y = []
y2 = []
y3 = []
#y7 = []
moy = []
moy2 = []
moy3 = []
CONST_MOYENNE = 100
fullTime = True
idMouleUnique = -1
axeMax = 0
axeMin = 999
if len(sys.argv) == 2:
idMouleUnique = int(sys.argv[1])
#if len(sys.argv) == 1:
# fullTime = True
#elif len(sys.argv) == 3 :
# try:
# date1 = float(sys.argv[1]) #datetime.strptime(sys.argv[1], '%Y-%m-%d %H:%M:%S')
# date2 = float(sys.argv[2]) #datetime.strptime(sys.argv[2], '%Y-%m-%d %H:%M:%S')
# except:
# print("Erreur, arguments incorrect. Les dates doivent etre sous la forme \"AAAA-MM-JJ HH-mm-SS\"")
# exit(1)
#else :
# print("Erreur, arguments incorrect. Les dates doivent etre sous la forme \"AAAA-MM-JJ HH-mm-SS\"")
# exit(1)
i = 0
with open('output.txt','r') as csvfile: #with open('mytable.csv','r') as csvfile:
next(csvfile, None)
plots = csv.reader(csvfile, delimiter=';') #plots = csv.reader(csvfile, delimiter=',')
for row in plots:
if not fullTime:
date = (float(row[0])/60)/60 # datetime.strptime(row[1],'%Y-%m-%d %H:%M:%S')
print(date)
if (date1-date) > 0: #(date1-date).total_seconds()
continue
if fullTime or (date2-date) > 0 : #(date2-date).total_seconds()
try:
x.append((float(row[0])/60)/60) #x.append(i)
if idMouleUnique == -1 or idMouleUnique == 0:
y.append(int(row[1])) #y.append(int(row[2]))
#if int(row[1]) > 415:
# y.append(500)
#else:
# y.append(0)
if idMouleUnique == -1 or idMouleUnique == 1:
y2.append(int(row[2]))
if idMouleUnique == -1 or idMouleUnique == 2:
y3.append(int(row[3]))
#y7.append(float(row[7]))
#print((float(row[0])/60)/60)
if i % 10000 == 0:
print((float(row[0])/60)/60)
#print(datetime.datetime.strptime(str(row[0]).strip(), '%Y-%m-%d %H:%M:%S.%f'))
if i >= CONST_MOYENNE :
moyenne = 0
moyenne2 = 0
moyenne3 = 0
for j in range(i-CONST_MOYENNE, i, 1) :
if idMouleUnique == -1 or idMouleUnique == 0: moyenne = moyenne+y[j]
if idMouleUnique == -1 or idMouleUnique == 1: moyenne2 = moyenne2+y2[j]
if idMouleUnique == -1 or idMouleUnique == 2: moyenne3 = moyenne3+y3[j]
if idMouleUnique == -1 or idMouleUnique == 0:
moy.append(moyenne / CONST_MOYENNE)
if (moyenne / CONST_MOYENNE) > axeMax: axeMax = (moyenne / CONST_MOYENNE)
if (moyenne / CONST_MOYENNE) < axeMin: axeMin = (moyenne / CONST_MOYENNE)
if idMouleUnique == -1 or idMouleUnique == 1:
moy2.append(moyenne2 / CONST_MOYENNE)
if (moyenne2 / CONST_MOYENNE) > axeMax: axeMax = (moyenne2 / CONST_MOYENNE)
if (moyenne2 / CONST_MOYENNE) < axeMin: axeMin = (moyenne2 / CONST_MOYENNE)
if idMouleUnique == -1 or idMouleUnique == 2:
moy3.append(moyenne3 / CONST_MOYENNE)
if (moyenne3 / CONST_MOYENNE) > axeMax: axeMax = (moyenne3 / CONST_MOYENNE)
if (moyenne3 / CONST_MOYENNE) < axeMin: axeMin = (moyenne3 / CONST_MOYENNE)
else:
if idMouleUnique == -1 or idMouleUnique == 0:
moy.append(int(row[1])) #moy.append(int(row[2]))
if int(row[1]) > axeMax: axeMax = int(row[1])
if int(row[1]) < axeMin: axeMin = int(row[1])
if idMouleUnique == -1 or idMouleUnique == 1:
moy2.append(int(row[2]))
if int(row[2]) > axeMax: axeMax = int(row[2])
if int(row[2]) < axeMin: axeMin = int(row[2])
if idMouleUnique == -1 or idMouleUnique == 2:
moy3.append(int(row[3]))
if int(row[3]) > axeMax: axeMax = int(row[3])
if int(row[3]) < axeMin: axeMin = int(row[3])
i = i+1
except KeyboardInterrupt:
sys.exit(0)
except:
print("Exception : ",row);
plt.suptitle("Aquarium 1")
#plt.plot(x,y, label='Donnes brut Plastique (A0) (1 -> 100ms)') # ancien moule Silicon
#plt.plot(x,y2, label='Donnes brut Plastique (A1) (1 -> 100ms)')
#plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d %H:%M:%S.%f'))
#plt.gca().xaxis.set_major_locator(mdates.DayLocator())
plt.subplot(321)
if idMouleUnique == -1 or idMouleUnique == 0: plt.plot(x[0:(i/6)],moy[0:(i/6)], label='Moyenne mobile Plastique (A0)') # ancien moule Silicon
if idMouleUnique == -1 or idMouleUnique == 1: plt.plot(x[0:(i/6)],moy2[0:(i/6)], label='Moyenne mobile Plastique 2 (A1)')
if idMouleUnique == -1 or idMouleUnique == 2: plt.plot(x[0:(i/6)],moy3[0:(i/6)], label='Moyenne mobile Plastique 3 (A4)')
plt.ylabel('Gauss')
plt.ylim((axeMin, axeMax))
plt.title('Moyenne mobile 1/6')
plt.subplot(322)
if idMouleUnique == -1 or idMouleUnique == 0: plt.plot(x[(i/6):((i/6)*2)],moy[(i/6):((i/6)*2)], label='Moyenne mobile Plastique (A0)') # ancien moule Silicon
if idMouleUnique == -1 or idMouleUnique == 1: plt.plot(x[(i/6):((i/6)*2)],moy2[(i/6):((i/6)*2)], label='Moyenne mobile Plastique 2 (A1)')
if idMouleUnique == -1 or idMouleUnique == 2: plt.plot(x[(i/6):((i/6)*2)],moy3[(i/6):((i/6)*2)], label='Moyenne mobile Plastique 3 (A4)')
plt.ylabel('Gauss')
plt.ylim((axeMin, axeMax))
plt.title('Moyenne mobile 2/6')
plt.subplot(323)
if idMouleUnique == -1 or idMouleUnique == 0: plt.plot(x[((i/6)*2):((i/6)*3)],moy[((i/6)*2):((i/6)*3)], label='Moyenne mobile Plastique (A0)') # ancien moule Silicon
if idMouleUnique == -1 or idMouleUnique == 1: plt.plot(x[((i/6)*2):((i/6)*3)],moy2[((i/6)*2):((i/6)*3)], label='Moyenne mobile Plastique 2 (A1)')
if idMouleUnique == -1 or idMouleUnique == 2: plt.plot(x[((i/6)*2):((i/6)*3)],moy3[((i/6)*2):((i/6)*3)], label='Moyenne mobile Plastique 3 (A4)')
plt.ylabel('Gauss')
plt.ylim((axeMin, axeMax))
plt.title('Moyenne mobile 3/6')
plt.subplot(324)
if idMouleUnique == -1 or idMouleUnique == 0: plt.plot(x[((i/6)*3):((i/6)*4)],moy[((i/6)*3):((i/6)*4)], label='Moyenne mobile Plastique (A0)') # ancien moule Silicon
if idMouleUnique == -1 or idMouleUnique == 1: plt.plot(x[((i/6)*3):((i/6)*4)],moy2[((i/6)*3):((i/6)*4)], label='Moyenne mobile Plastique 2 (A1)')
if idMouleUnique == -1 or idMouleUnique == 2: plt.plot(x[((i/6)*3):((i/6)*4)],moy3[((i/6)*3):((i/6)*4)], label='Moyenne mobile Plastique 3 (A4)')
plt.ylabel('Gauss')
plt.ylim((axeMin, axeMax))
plt.title('Moyenne mobile 4/6')
plt.subplot(325)
if idMouleUnique == -1 or idMouleUnique == 0: plt.plot(x[((i/6)*4):((i/6)*5)],moy[((i/6)*4):((i/6)*5)], label='Moyenne mobile Plastique (A0)') # ancien moule Silicon
if idMouleUnique == -1 or idMouleUnique == 1: plt.plot(x[((i/6)*4):((i/6)*5)],moy2[((i/6)*4):((i/6)*5)], label='Moyenne mobile Plastique 2 (A1)')
if idMouleUnique == -1 or idMouleUnique == 2: plt.plot(x[((i/6)*4):((i/6)*5)],moy3[((i/6)*4):((i/6)*5)], label='Moyenne mobile Plastique 3 (A4)')
plt.xlabel('Temps (heures)')
plt.ylabel('Gauss')
plt.ylim((axeMin, axeMax))
plt.title('Moyenne mobile 5/6')
plt.subplot(326)
if idMouleUnique == -1 or idMouleUnique == 0: plt.plot(x[((i/6)*5):i],moy[((i/6)*5):i], label='Moyenne mobile Plastique (A0)') # ancien moule Silicon
if idMouleUnique == -1 or idMouleUnique == 1: plt.plot(x[((i/6)*5):i],moy2[((i/6)*5):i], label='Moyenne mobile Plastique 2 (A1)')
if idMouleUnique == -1 or idMouleUnique == 2: plt.plot(x[((i/6)*5):i],moy3[((i/6)*5):i], label='Moyenne mobile Plastique 3 (A4)')
plt.xlabel('Temps (heures)')
plt.ylabel('Gauss')
plt.ylim((axeMin, axeMax))
plt.title('Moyenne mobile 6/6')
#plt.gcf().autofmt_xdate()
#plt.plot(x,y7, label='Temperature (Degree)')
#plt.xlabel('Temps (heures)')
#plt.ylabel('Gauss')
#plt.title('Astreos')
#plt.legend()
#plt.axes()
#plt.tight_layout()
plt.show()
# Python 2 (ajouter les cast en int() pour python 3)
# En cas de probleme de performance, n'afficher la date que toutes les 1000 valeurs => if i % 1000 == 0 : print(...)
# Version 2: Utilisable avec les fichiers issue du second groupe de test, ou le champ "temps" est ecrit avec une date sous la forme AAAA-MM-JJ HH:mm:SS.ff
# UTILISATION
# sans argument = Toutes les moules
# avec argument =>
# 0 = moule A0
# 1 = moule A1
# 2 = moule A2
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib
import csv
import sys
import datetime
x = []
y = []
y2 = []
y3 = []
#y7 = []
moy = []
moy2 = []
moy3 = []
CONST_MOYENNE = 100
fullTime = True
idMouleUnique = -1
axeMax = 0
axeMin = 999
if len(sys.argv) == 2:
idMouleUnique = int(sys.argv[1])
#if len(sys.argv) == 1:
# fullTime = True
#elif len(sys.argv) == 3 :
# try:
# date1 = float(sys.argv[1]) #datetime.strptime(sys.argv[1], '%Y-%m-%d %H:%M:%S')
# date2 = float(sys.argv[2]) #datetime.strptime(sys.argv[2], '%Y-%m-%d %H:%M:%S')
# except:
# print("Erreur, arguments incorrect. Les dates doivent etre sous la forme \"AAAA-MM-JJ HH-mm-SS\"")
# exit(1)
#else :
# print("Erreur, arguments incorrect. Les dates doivent etre sous la forme \"AAAA-MM-JJ HH-mm-SS\"")
# exit(1)
i = 0
with open('output.txt','r') as csvfile: #with open('mytable.csv','r') as csvfile:
next(csvfile, None)
plots = csv.reader(csvfile, delimiter=';') #plots = csv.reader(csvfile, delimiter=',')
for row in plots:
if not fullTime:
date = datetime.strptime(row[1],'%Y-%m-%d %H:%M:%S') #(float(row[0])/60)/60 #
print(date)
if (date1-date) > 0: #(date1-date).total_seconds()
continue
if fullTime or (date2-date) > 0 : #(date2-date).total_seconds()
try:
#x.append((float(row[0])/60)/60) #x.append(i)
x.append(datetime.datetime.strptime(str(row[0]).strip(), '%Y-%m-%d %H:%M:%S.%f'))
if idMouleUnique == -1 or idMouleUnique == 0:
y.append(int(row[1])) #y.append(int(row[2]))
#if int(row[1]) > 415:
# y.append(500)
#else:
# y.append(0)
if idMouleUnique == -1 or idMouleUnique == 1:
y2.append(int(row[2]))
if idMouleUnique == -1 or idMouleUnique == 2:
y3.append(int(row[3]))
#y7.append(float(row[7]))
#print((float(row[0])/60)/60)
if i % 10000 == 0:
print(datetime.datetime.strptime(str(row[0]).strip(), '%Y-%m-%d %H:%M:%S.%f'))
if i >= CONST_MOYENNE :
moyenne = 0
moyenne2 = 0
moyenne3 = 0
for j in range(i-CONST_MOYENNE, i, 1) :
if idMouleUnique == -1 or idMouleUnique == 0: moyenne = moyenne+y[j]
if idMouleUnique == -1 or idMouleUnique == 1: moyenne2 = moyenne2+y2[j]
if idMouleUnique == -1 or idMouleUnique == 2: moyenne3 = moyenne3+y3[j]
if idMouleUnique == -1 or idMouleUnique == 0:
moy.append(moyenne / CONST_MOYENNE)
if (moyenne / CONST_MOYENNE) > axeMax: axeMax = (moyenne / CONST_MOYENNE)
if (moyenne / CONST_MOYENNE) < axeMin: axeMin = (moyenne / CONST_MOYENNE)
if idMouleUnique == -1 or idMouleUnique == 1:
moy2.append(moyenne2 / CONST_MOYENNE)
if (moyenne2 / CONST_MOYENNE) > axeMax: axeMax = (moyenne2 / CONST_MOYENNE)
if (moyenne2 / CONST_MOYENNE) < axeMin: axeMin = (moyenne2 / CONST_MOYENNE)
if idMouleUnique == -1 or idMouleUnique == 2:
moy3.append(moyenne3 / CONST_MOYENNE)
if (moyenne3 / CONST_MOYENNE) > axeMax: axeMax = (moyenne3 / CONST_MOYENNE)
if (moyenne3 / CONST_MOYENNE) < axeMin: axeMin = (moyenne3 / CONST_MOYENNE)
else:
if idMouleUnique == -1 or idMouleUnique == 0:
moy.append(int(row[1])) #moy.append(int(row[2]))
if int(row[1]) > axeMax: axeMax = int(row[1])
if int(row[1]) < axeMin: axeMin = int(row[1])
if idMouleUnique == -1 or idMouleUnique == 1:
moy2.append(int(row[2]))
if int(row[2]) > axeMax: axeMax = int(row[2])
if int(row[2]) < axeMin: axeMin = int(row[2])
if idMouleUnique == -1 or idMouleUnique == 2:
moy3.append(int(row[3]))
if int(row[3]) > axeMax: axeMax = int(row[3])
if int(row[3]) < axeMin: axeMin = int(row[3])
i = i+1
except KeyboardInterrupt:
sys.exit(0)
#except:
# print("Exception : ",row);
print(i/6)
plt.suptitle("Aquarium 1")
#plt.plot(x,y, label='Donnes brut Plastique (A0) (1 -> 100ms)') # ancien moule Silicon
#plt.plot(x,y2, label='Donnes brut Plastique (A1) (1 -> 100ms)')
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d %H:%M:%S.%f'))
plt.gca().xaxis.set_major_locator(mdates.DayLocator())
plt.subplot(321)
if idMouleUnique == -1 or idMouleUnique == 0: plt.plot(x[0:(i/6)],moy[0:(i/6)], label='Moyenne mobile Plastique (A0)') # ancien moule Silicon
if idMouleUnique == -1 or idMouleUnique == 1: plt.plot(x[0:(i/6)],moy2[0:(i/6)], label='Moyenne mobile Plastique 2 (A1)')
if idMouleUnique == -1 or idMouleUnique == 2: plt.plot(x[0:(i/6)],moy3[0:(i/6)], label='Moyenne mobile Plastique 3 (A4)')
plt.ylabel('Gauss')
plt.ylim((axeMin, axeMax))
plt.title('Moyenne mobile 1/6')
plt.subplot(322)
if idMouleUnique == -1 or idMouleUnique == 0: plt.plot(x[(i/6):((i/6)*2)],moy[(i/6):((i/6)*2)], label='Moyenne mobile Plastique (A0)') # ancien moule Silicon
if idMouleUnique == -1 or idMouleUnique == 1: plt.plot(x[(i/6):((i/6)*2)],moy2[(i/6):((i/6)*2)], label='Moyenne mobile Plastique 2 (A1)')
if idMouleUnique == -1 or idMouleUnique == 2: plt.plot(x[(i/6):((i/6)*2)],moy3[(i/6):((i/6)*2)], label='Moyenne mobile Plastique 3 (A4)')
plt.ylabel('Gauss')
plt.ylim((axeMin, axeMax))
plt.title('Moyenne mobile 2/6')
plt.subplot(323)
if idMouleUnique == -1 or idMouleUnique == 0: plt.plot(x[((i/6)*2):((i/6)*3)],moy[((i/6)*2):((i/6)*3)], label='Moyenne mobile Plastique (A0)') # ancien moule Silicon
if idMouleUnique == -1 or idMouleUnique == 1: plt.plot(x[((i/6)*2):((i/6)*3)],moy2[((i/6)*2):((i/6)*3)], label='Moyenne mobile Plastique 2 (A1)')
if idMouleUnique == -1 or idMouleUnique == 2: plt.plot(x[((i/6)*2):((i/6)*3)],moy3[((i/6)*2):((i/6)*3)], label='Moyenne mobile Plastique 3 (A4)')
plt.ylabel('Gauss')
plt.ylim((axeMin, axeMax))
plt.title('Moyenne mobile 3/6')
plt.subplot(324)
if idMouleUnique == -1 or idMouleUnique == 0: plt.plot(x[((i/6)*3):((i/6)*4)],moy[((i/6)*3):((i/6)*4)], label='Moyenne mobile Plastique (A0)') # ancien moule Silicon
if idMouleUnique == -1 or idMouleUnique == 1: plt.plot(x[((i/6)*3):((i/6)*4)],moy2[((i/6)*3):((i/6)*4)], label='Moyenne mobile Plastique 2 (A1)')
if idMouleUnique == -1 or idMouleUnique == 2: plt.plot(x[((i/6)*3):((i/6)*4)],moy3[((i/6)*3):((i/6)*4)], label='Moyenne mobile Plastique 3 (A4)')
plt.ylabel('Gauss')
plt.ylim((axeMin, axeMax))
plt.title('Moyenne mobile 4/6')
plt.subplot(325)
if idMouleUnique == -1 or idMouleUnique == 0: plt.plot(x[((i/6)*4):((i/6)*5)],moy[((i/6)*4):((i/6)*5)], label='Moyenne mobile Plastique (A0)') # ancien moule Silicon
if idMouleUnique == -1 or idMouleUnique == 1: plt.plot(x[((i/6)*4):((i/6)*5)],moy2[((i/6)*4):((i/6)*5)], label='Moyenne mobile Plastique 2 (A1)')
if idMouleUnique == -1 or idMouleUnique == 2: plt.plot(x[((i/6)*4):((i/6)*5)],moy3[((i/6)*4):((i/6)*5)], label='Moyenne mobile Plastique 3 (A4)')
plt.xlabel('Temps (heures)')
plt.ylabel('Gauss')
plt.ylim((axeMin, axeMax))
plt.title('Moyenne mobile 5/6')
plt.subplot(326)
if idMouleUnique == -1 or idMouleUnique == 0: plt.plot(x[((i/6)*5):i],moy[((i/6)*5):i], label='Moyenne mobile Plastique (A0)') # ancien moule Silicon
if idMouleUnique == -1 or idMouleUnique == 1: plt.plot(x[((i/6)*5):i],moy2[((i/6)*5):i], label='Moyenne mobile Plastique 2 (A1)')
if idMouleUnique == -1 or idMouleUnique == 2: plt.plot(x[((i/6)*5):i],moy3[((i/6)*5):i], label='Moyenne mobile Plastique 3 (A4)')
plt.xlabel('Temps (heures)')
plt.ylabel('Gauss')
plt.ylim((axeMin, axeMax))
plt.title('Moyenne mobile 6/6')
#plt.gcf().autofmt_xdate()
#plt.plot(x,y7, label='Temperature (Degree)')
#plt.xlabel('Temps (heures)')
#plt.ylabel('Gauss')
#plt.title('Astreos')
#plt.legend()
#plt.axes()
#plt.tight_layout()
plt.show()
# Python 2 (ajouter les cast en int() pour python 3)
# En cas de probleme de performance, n'afficher la date que toutes les 1000 valeurs => if i % 1000 == 0 : print(...)
# Version 3: Utilisable avec les fichiers issue de la troisieme experience, ou les fichiers sont subdivises en periode de temps et regroupe dans un dossier
# UTILISATION
# sans argument = Toutes les moules
# avec argument =>
# 0 = moule A0
# 1 = moule A1
# 2 = moule A2
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib
import csv
import sys
import datetime
import os
x = []
y = []
y2 = []
y3 = []
#y7 = []
moy = []
moy2 = []
moy3 = []
CONST_MOYENNE = 100
FOLDER = "./output/"
DIR = os.listdir(FOLDER)
DIR.sort()
print(DIR)
fullTime = True
idMouleUnique = -1
axeMax = 0
axeMin = 999
if len(sys.argv) == 2:
idMouleUnique = int(sys.argv[1])
#if len(sys.argv) == 1:
# fullTime = True
#elif len(sys.argv) == 3 :
# try:
# date1 = float(sys.argv[1]) #datetime.strptime(sys.argv[1], '%Y-%m-%d %H:%M:%S')
# date2 = float(sys.argv[2]) #datetime.strptime(sys.argv[2], '%Y-%m-%d %H:%M:%S')
# except:
# print("Erreur, arguments incorrect. Les dates doivent etre sous la forme \"AAAA-MM-JJ HH-mm-SS\"")
# exit(1)
#else :
# print("Erreur, arguments incorrect. Les dates doivent etre sous la forme \"AAAA-MM-JJ HH-mm-SS\"")
# exit(1)
i = 0
for f in DIR:
with open(FOLDER+f,'r') as csvfile:
next(csvfile, None)
plots = csv.reader(csvfile, delimiter=';') #plots = csv.reader(csvfile, delimiter=',')
for row in plots:
if not fullTime:
date = datetime.strptime(row[1],'%Y-%m-%d %H:%M:%S') #(float(row[0])/60)/60 #
print(date)
if (date1-date) > 0: #(date1-date).total_seconds()
continue
if fullTime or (date2-date) > 0 : #(date2-date).total_seconds()
try:
#x.append((float(row[0])/60)/60) #x.append(i)
x.append(datetime.datetime.strptime(str(row[0]).strip(), '%Y-%m-%d %H:%M:%S.%f'))
if idMouleUnique == -1 or idMouleUnique == 0:
y.append(int(row[1])) #y.append(int(row[2]))
#if int(row[1]) > 415:
# y.append(500)
#else:
# y.append(0)
if idMouleUnique == -1 or idMouleUnique == 1:
y2.append(int(row[2]))
if idMouleUnique == -1 or idMouleUnique == 2:
y3.append(int(row[3]))
#y7.append(float(row[7]))
#print((float(row[0])/60)/60)
if i % 10000 == 0:
print(datetime.datetime.strptime(str(row[0]).strip(), '%Y-%m-%d %H:%M:%S.%f'))
if i >= CONST_MOYENNE :
moyenne = 0
moyenne2 = 0
moyenne3 = 0
for j in range(i-CONST_MOYENNE, i, 1) :
if idMouleUnique == -1 or idMouleUnique == 0: moyenne = moyenne+y[j]
if idMouleUnique == -1 or idMouleUnique == 1: moyenne2 = moyenne2+y2[j]
if idMouleUnique == -1 or idMouleUnique == 2: moyenne3 = moyenne3+y3[j]
if idMouleUnique == -1 or idMouleUnique == 0:
moy.append(moyenne / CONST_MOYENNE)
if (moyenne / CONST_MOYENNE) > axeMax: axeMax = (moyenne / CONST_MOYENNE)
if (moyenne / CONST_MOYENNE) < axeMin: axeMin = (moyenne / CONST_MOYENNE)
if idMouleUnique == -1 or idMouleUnique == 1:
moy2.append(moyenne2 / CONST_MOYENNE)
if (moyenne2 / CONST_MOYENNE) > axeMax: axeMax = (moyenne2 / CONST_MOYENNE)
if (moyenne2 / CONST_MOYENNE) < axeMin: axeMin = (moyenne2 / CONST_MOYENNE)
if idMouleUnique == -1 or idMouleUnique == 2:
moy3.append(moyenne3 / CONST_MOYENNE)
if (moyenne3 / CONST_MOYENNE) > axeMax: axeMax = (moyenne3 / CONST_MOYENNE)
if (moyenne3 / CONST_MOYENNE) < axeMin: axeMin = (moyenne3 / CONST_MOYENNE)
else:
if idMouleUnique == -1 or idMouleUnique == 0:
moy.append(int(row[1])) #moy.append(int(row[2]))
if int(row[1]) > axeMax: axeMax = int(row[1])
if int(row[1]) < axeMin: axeMin = int(row[1])
if idMouleUnique == -1 or idMouleUnique == 1:
moy2.append(int(row[2]))
if int(row[2]) > axeMax: axeMax = int(row[2])
if int(row[2]) < axeMin: axeMin = int(row[2])
if idMouleUnique == -1 or idMouleUnique == 2:
moy3.append(int(row[3]))
if int(row[3]) > axeMax: axeMax = int(row[3])
if int(row[3]) < axeMin: axeMin = int(row[3])
i = i+1
except KeyboardInterrupt:
sys.exit(0)
except:
print("Exception : ",row);
# En cas d'erreur de lecture, on egalise les tailles
while (idMouleUnique == -1 and (len(x) != len(moy)) and (len(x) != len(moy2)) and (len(x) != len(moy3))) or (idMouleUnique == 0 and len(x) != len(moy)) or (idMouleUnique == 1 and len(x) != len(moy2)) or (idMouleUnique == 2 and len(x) != len(moy3)):
if idMouleUnique == -1 or idMouleUnique == 0:
if len(x) < len(moy) : moy.pop()
elif len(x) > len(moy): x.pop()
if idMouleUnique == -1 or idMouleUnique == 1:
if len(x) < len(moy2): moy2.pop()
elif len(x) > len(moy2): x.pop()
if idMouleUnique == -1 or idMouleUnique == 2:
if len(x) < len(moy3): moy3.pop()
elif len(x) > len(moy3): x.pop()
plt.suptitle("Aquarium 1")
#plt.plot(x,y, label='Donnes brut Plastique (A0) (1 -> 100ms)') # ancien moule Silicon
#plt.plot(x,y2, label='Donnes brut Plastique (A1) (1 -> 100ms)')
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d %H:%M:%S.%f'))
plt.gca().xaxis.set_major_locator(mdates.DayLocator())
plt.subplot(321)
if idMouleUnique == -1 or idMouleUnique == 0: plt.plot(x[0:(i/6)],moy[0:(i/6)], label='Moyenne mobile Plastique (A0)') # ancien moule Silicon
if idMouleUnique == -1 or idMouleUnique == 1: plt.plot(x[0:(i/6)],moy2[0:(i/6)], label='Moyenne mobile Plastique 2 (A1)')
if idMouleUnique == -1 or idMouleUnique == 2: plt.plot(x[0:(i/6)],moy3[0:(i/6)], label='Moyenne mobile Plastique 3 (A4)')
plt.ylabel('Gauss')
plt.ylim((axeMin, axeMax))
plt.title('Moyenne mobile 1/6')
plt.subplot(322)
if idMouleUnique == -1 or idMouleUnique == 0: plt.plot(x[(i/6):((i/6)*2)],moy[(i/6):((i/6)*2)], label='Moyenne mobile Plastique (A0)') # ancien moule Silicon
if idMouleUnique == -1 or idMouleUnique == 1: plt.plot(x[(i/6):((i/6)*2)],moy2[(i/6):((i/6)*2)], label='Moyenne mobile Plastique 2 (A1)')
if idMouleUnique == -1 or idMouleUnique == 2: plt.plot(x[(i/6):((i/6)*2)],moy3[(i/6):((i/6)*2)], label='Moyenne mobile Plastique 3 (A4)')
plt.ylabel('Gauss')
plt.ylim((axeMin, axeMax))
plt.title('Moyenne mobile 2/6')
plt.subplot(323)
if idMouleUnique == -1 or idMouleUnique == 0: plt.plot(x[((i/6)*2):((i/6)*3)],moy[((i/6)*2):((i/6)*3)], label='Moyenne mobile Plastique (A0)') # ancien moule Silicon
if idMouleUnique == -1 or idMouleUnique == 1: plt.plot(x[((i/6)*2):((i/6)*3)],moy2[((i/6)*2):((i/6)*3)], label='Moyenne mobile Plastique 2 (A1)')
if idMouleUnique == -1 or idMouleUnique == 2: plt.plot(x[((i/6)*2):((i/6)*3)],moy3[((i/6)*2):((i/6)*3)], label='Moyenne mobile Plastique 3 (A4)')
plt.ylabel('Gauss')
plt.ylim((axeMin, axeMax))
plt.title('Moyenne mobile 3/6')
plt.subplot(324)
if idMouleUnique == -1 or idMouleUnique == 0: plt.plot(x[((i/6)*3):((i/6)*4)],moy[((i/6)*3):((i/6)*4)], label='Moyenne mobile Plastique (A0)') # ancien moule Silicon
if idMouleUnique == -1 or idMouleUnique == 1: plt.plot(x[((i/6)*3):((i/6)*4)],moy2[((i/6)*3):((i/6)*4)], label='Moyenne mobile Plastique 2 (A1)')
if idMouleUnique == -1 or idMouleUnique == 2: plt.plot(x[((i/6)*3):((i/6)*4)],moy3[((i/6)*3):((i/6)*4)], label='Moyenne mobile Plastique 3 (A4)')
plt.ylabel('Gauss')
plt.ylim((axeMin, axeMax))
plt.title('Moyenne mobile 4/6')
plt.subplot(325)
if idMouleUnique == -1 or idMouleUnique == 0: plt.plot(x[((i/6)*4):((i/6)*5)],moy[((i/6)*4):((i/6)*5)], label='Moyenne mobile Plastique (A0)') # ancien moule Silicon
if idMouleUnique == -1 or idMouleUnique == 1: plt.plot(x[((i/6)*4):((i/6)*5)],moy2[((i/6)*4):((i/6)*5)], label='Moyenne mobile Plastique 2 (A1)')
if idMouleUnique == -1 or idMouleUnique == 2: plt.plot(x[((i/6)*4):((i/6)*5)],moy3[((i/6)*4):((i/6)*5)], label='Moyenne mobile Plastique 3 (A4)')
plt.xlabel('Temps (heures)')
plt.ylabel('Gauss')
plt.ylim((axeMin, axeMax))
plt.title('Moyenne mobile 5/6')
plt.subplot(326)
if idMouleUnique == -1 or idMouleUnique == 0: plt.plot(x[((i/6)*5):i],moy[((i/6)*5):i], label='Moyenne mobile Plastique (A0)') # ancien moule Silicon
if idMouleUnique == -1 or idMouleUnique == 1: plt.plot(x[((i/6)*5):i],moy2[((i/6)*5):i], label='Moyenne mobile Plastique 2 (A1)')
if idMouleUnique == -1 or idMouleUnique == 2: plt.plot(x[((i/6)*5):i],moy3[((i/6)*5):i], label='Moyenne mobile Plastique 3 (A4)')
plt.xlabel('Temps (heures)')
plt.ylabel('Gauss')
plt.ylim((axeMin, axeMax))
plt.title('Moyenne mobile 6/6')
#plt.gcf().autofmt_xdate()
#plt.plot(x,y7, label='Temperature (Degree)')
#plt.xlabel('Temps (heures)')
#plt.ylabel('Gauss')
#plt.title('Astreos')
#plt.legend()
#plt.axes()
#plt.tight_layout()
plt.show()
# Python 2 (ajouter les cast en int() pour python 3)
# En cas de probleme de performance, n'afficher la date que toutes les 1000 valeurs => if i % 1000 == 0 : print(...)
# Version 1: Utilisable avec les fichiers des premiers tests, ou le champ "temps" est ecrit avec une date en secondes
# UTILISATION
# sans argument = Toutes les moules
# avec argument =>
# 3 = moule A3
# 4 = moule A4
# 5 = moule A5
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib
import csv
import sys
import datetime
x = []
y4 = []
y5 = []
y6 = []
#y7 = []
moy4 = []
moy5 = []
moy6 = []
CONST_MOYENNE = 100
fullTime = True
idMouleUnique = -1
axeMax = 0
axeMin = 999
if len(sys.argv) == 2:
idMouleUnique = int(sys.argv[1])