Subplot multiples dans une boucle
Sujet : Subplot multiples dans une boucle
De : nospam_b.gonzalezvazq (at) *nospam* gmail.com.invalid (BeaGV)
Groupes : fr.comp.lang.pythonDate : 23. Mar 2022, 13:38:15
Autres entêtes
Organisation : !No_Organization!
Message-ID : <SK-dnaDhjKM6m6b_nZ2dnUU7_83NnZ2d@giganews.com>
Bonjour,
Bonjour,
Je suis débutante en Python et je bloque depuis un moment sur une représentation
graphique dans une figure avec 2 lignes et 5 colonnes dans une boucle while.
Voici le code que j'ai écrit le problème est dans les boucles while, j'ai bien
l'affichage des graphiques mais un par un pas dans la figure avec les 10
subplot.... De plus la figure ne s'enregistre pas ....
Est-ce que quelqu'un pourrait m'aider, cela fait quelques jours que je cherche
une solution....
Merci d'avance pour votre aide!
Bea
# Initialisation boucle while
cycle_avant = -10
pos_avant = 1
plt.figure(figsize=(15, 7))
pyplot.gcf().subplots_adjust(left = 0.1, bottom = 0.3, right = 0.8, top = 0.9,
wspace = 0.08, hspace = 0.35)
#Calcul du débit moyen, max, min, dépassement moyen d'un cycle complet de
filtration
for Periode in dfCycle.index:
#Extraction des débits sur la période du cycle complet de filtration
dtDebCyc = dfCycle.iloc[Periode,0]
dtFinCyc = dfCycle.iloc[Periode,1]
#calcul de la moyenne, max, min
#print(dtDeb, dtFin)
dfDebitCycle =
dfDebitFiltration.iloc[dfDebitFiltration.index.searchsorted(dtDebCyc):dfDebitFiltration.index.searchsorted(dtFinCyc)]
#Parenthèse pour graphiques 10 cycles avant et 10 cycle après les lavages à
la soude
# Premier lavage à la soude 142j = 27/11/2014 19:58:09
if pos_avant <= 10:
while dtDebCyc == (datetime(year=2014, month=11, day=19, hour=15,
minute=22, second=53)) or dtDebCyc == (datetime(year=2014, month=11, day=20,
hour=6, minute=53, second=38)) or dtDebCyc == (datetime(year=2014, month=11,
day=20, hour=22, minute=7, second=47)) or dtDebCyc == (datetime(year=2014,
month=11, day=21, hour=8, minute=47, second=52)) or dtDebCyc ==
(datetime(year=2014, month=11, day=24, hour=8, minute=48, second=34)) or
dtDebCyc == (datetime(year=2014, month=11, day=25, hour=6, minute=34,
second=31)) or dtDebCyc == (datetime(year=2014, month=11, day=25, hour=21,
minute=12, second=2)) or dtDebCyc == (datetime(year=2014, month=11, day=26,
hour=11, minute=26, second=3)) or dtDebCyc == (datetime(year=2014, month=11,
day=27, hour=2, minute=21, second=20)) or dtDebCyc == (datetime(year=2014,
month=11, day=27, hour=19, minute=58, second=9)):
dfDebitCycle['Date (j)'] = dfDebitCycle.index- dtDebCyc
dfDebitCycle['Date (j)'] = dfDebitCycle['Date (j)'] /
np.timedelta64(1, 's')/60/60
plt.subplot(2,5,pos_avant) # je divise la figure en 4 colonnes et je
représente le graphique 1 dans la première colonne
plt.scatter(dfDebitCycle['Date (j)'], dfDebitCycle['Débit'],
facecolor='none', edgecolor='blue', label='Q', marker='o', s = 10)
print(pos_avant, 'position')
print(cycle_avant, 'cycle')
#plt.xlim(0, 24)
#plt.ylim(10000, 40000)
#plt.yticks([21.8, 22.1, 22.4, 22.7, 23, 23.3]) # Fixe le pas de
temps des graduations
plt.xticks(fontsize=10)
plt.yticks(fontsize=10)
plt.xlabel('t (h)', fontsize=10)
plt.ylabel('Débit (m$^3$/h)', fontsize=10)
plt.title(repr(cycle_avant) + ' j' , fontsize=10)
plt.show()
cycle_avant = cycle_avant +1
pos_avant = pos_avant +1
break
if pos_avant == 11:
plt.show()
path = 'C:/Users/b_gonzal/Desktop/Beatriz/Thèse/Lavages (Méca
Fluides)/Bilan matière lavages/Optimisation modèle accu solide_14-02-2022/'
os.chdir(path)
plt.savefig('Débit_10j_avant_LS1.png', dpi =600,
bbox_inches='tight') # bbox_inches='tight' permet de ne pas couper des zones du
graphique (ajuste la taille de la figure)
plt.savefig('Débit_10j_avant_LS1.pdf', dpi=600, bbox_inches='tight')
# bbox_inches='tight' permet de ne pas couper des zones du graphique (ajuste la
taille de la figure)
# Initialisation boucle while
cycle_apres = 1
pos_apres = 1
plt.figure(figsize=(15, 7))
pyplot.gcf().subplots_adjust(left = 0.1, bottom = 0.3, right = 0.8, top =
0.9, wspace = 0.08, hspace = 0.35)
while dtDebCyc == (datetime(year=2014, month=12, day=1, hour=10, minute=21,
second=59)) or dtDebCyc == (datetime(year=2014, month=12, day=1, hour=14,
minute=12, second=18)) or dtDebCyc == (datetime(year=2014, month=12, day=2,
hour=0, minute=0, second=21)) or dtDebCyc == (datetime(year=2014, month=12,
day=2, hour=13, minute=17, second=19)) or dtDebCyc == (datetime(year=2014,
month=12, day=3, hour=2, minute=13, second=21)) or dtDebCyc ==
(datetime(year=2014, month=12, day=3, hour=21, minute=52, second=29)) or
dtDebCyc == (datetime(year=2014, month=12, day=4, hour=13, minute=33,
second=25)) or dtDebCyc == (datetime(year=2014, month=12, day=5, hour=9,
minute=57, second=28)) or dtDebCyc == (datetime(year=2014, month=12, day=6,
hour=1, minute=46, second=31)) or dtDebCyc == (datetime(year=2014, month=12,
day=6, hour=22, minute=42, second=32)):
dfDebitCycle['Date (j)'] = dfDebitCycle.index- dtDebCyc
dfDebitCycle['Date (j)'] = dfDebitCycle['Date (j)'] / np.timedelta64(1,
's')/60/60
plt.subplot(2,5,pos_apres) # je divise la figure en 5 colonnes
plt.scatter(dfDebitCycle.index-dtDebCyc, dfDebitCycle['Débit'],
facecolor='none', edgecolor='blue', label='Q', marker='o', s = 10)
print(pos_apres, 'position')
print(cycle_apres, 'cycle')
#plt.xlim(0, 24)
#plt.ylim(10000, 40000)
#plt.yticks([21.8, 22.1, 22.4, 22.7, 23, 23.3]) # Fixe le pas de temps
des graduations
plt.xticks(fontsize=10)
plt.yticks(fontsize=10)
plt.xlabel('t (h)', fontsize=10)
plt.ylabel('Débit (m$^3$/h)', fontsize=10)
plt.title(repr(cycle_apres) + ' j' , fontsize=16)
plt.show()
cycle_apres = cycle_apres +1
pos_apres = pos_apres +1
break
if pos_apres == 11:
plt.show()
path = 'C:/Users/b_gonzal/Desktop/Beatriz/Thèse/Lavages (Méca
Fluides)/Bilan matière lavages/Optimisation modèle accu solide_14-02-2022/'
os.chdir(path)
plt.savefig('Débit_10j_après_LS1.png', dpi=600, bbox_inches='tight') #
bbox_inches='tight' permet de ne pas couper des zones du graphique (ajuste la
taille de la figure)
plt.savefig('Débit_10j_après_LS1.pdf', dpi=600, bbox_inches='tight') #
bbox_inches='tight' permet de ne pas couper des zones du graphique (ajuste la
taille de la figure)
# Deuxième lavage à la soude 292j = 26/04/2015 10:37:39
# Troisième lavage à la soude 544j = 04/01/2016 07:29:54
# Quatrième lavage à la soude 729j = 05/07/2016 23:02:52
# Arrondi de la date à l'heure inférieure ("floor", utiliser "ceil" si on
veut arrondir à l'heure supérieure)
dfDebitCycleHoraire =dfDebitCycle
dfDebitCycleHoraire['Date Horaire'] = dfDebitCycleHoraire.index
dfDebitCycleHoraire['Date Horaire'] = dfDebitCycleHoraire['Date
Horaire'].apply(lambda x: x.floor('60 min'))
if (not(dfDebitCycle.empty)):
DebitInitialCycle =
dfDebitFiltration.iloc[dfDebitFiltration.index.searchsorted(dtDebCyc),0]
#Calcul Débit initial de cycle de filtration
dfDebitInitialCycle = pd.DataFrame({'': [dtDebCyc, dtFinCyc,
float(DebitInitialCycle)]}, index = ['Début cycle filtration', 'Fin cycle
filtration', 'Débit initial']).transpose()
#Concaténation des périodes dans un dataframe complet
dfQinitialCycle = pd.concat([dfQinitialCycle, dfDebitInitialCycle],
axis=0)
if(not(dfDebitCycle.empty)):
# Moyenne du cycle, max et min
dfMoyenneCycle = pd.DataFrame({'': [dtDebCyc, dtFinCyc,
float(dfDebitCycle['Débit'].mean()), float(dfDebitCycle['Débit'].max()),
float(dfDebitCycle['Débit'].min())]}, index = ['Début cycle filtration', 'Fin
cycle filtration', 'Débit moyen', 'Débit max', 'Débit min']).transpose()
#Concaténation des moyennes dans un dataframe complet
dfMoyenne = pd.concat([dfMoyenne, dfMoyenneCycle], axis=0)
# Moyenne du cycle, max et min horaires
dfDebitCycle_i_Horaire = dfDebitCycleHoraire.pivot_table('Débit', 'Date
Horaire', aggfunc=np.mean)
dfMoyenneCycleHoraire = pd.DataFrame({'': [dtDebCyc, dtFinCyc,
float(dfDebitCycleHoraire.pivot_table('Débit', 'Date Horaire',
aggfunc=np.mean)['Débit'].mean()),
float(dfDebitCycleHoraire.pivot_table('Débit', 'Date Horaire',
aggfunc=np.mean)['Débit'].max()), float(dfDebitCycleHoraire.pivot_table('Débit',
'Date Horaire', aggfunc=np.mean)['Débit'].min())]}, index = ['Début cycle
filtration', 'Fin cycle filtration', 'Débit moyen horaire', 'Débit max horaire',
'Débit min horaire']).transpose()
dfMoyenneHoraire = pd.concat([dfMoyenneHoraire, dfMoyenneCycleHoraire],
axis=0)
#Ajout d'un index
dfMoyenne.index = range(1,len(dfMoyenne)+1)
dfMoyenneHoraire.index = range(1,len(dfMoyenneHoraire)+1)
dfQinitialCycle.index = range(1,len(dfQinitialCycle)+1)
#Mise en forme des colonnes
#dfMoyenne['Début cycle filtration'] = dfMoyenne['Début cycle
filtration'].apply(lambda x: x.strftime('%d/%m/%Y %H:%M:%S'))
#dfMoyenne['Fin cycle filtration'] = dfMoyenne['Fin cycle
filtration'].apply(lambda x: x.strftime('%d/%m/%Y %H:%M:%S'))
#dfMoyenneHoraire['Début cycle filtration'] = dfMoyenneHoraire['Début cycle
filtration'].apply(lambda x: x.strftime('%d/%m/%Y %H:%M:%S'))
#dfMoyenneHoraire['Fin cycle filtration'] = dfMoyenneHoraire['Fin cycle
filtration'].apply(lambda x: x.strftime('%d/%m/%Y %H:%M:%S'))
#dfQinitialCycle['Début cycle filtration'] = dfQinitialCycle['Début cycle
filtration'].apply(lambda x: x.strftime('%d/%m/%Y %H:%M:%S'))
#dfQinitialCycle['Fin cycle filtration'] = dfQinitialCycle['Fin cycle
filtration'].apply(lambda x: x.strftime('%d/%m/%Y %H:%M:%S'))
#dfMoyenne['Débit moyen'] = dfMoyenne['Débit moyen'].astype(float).round()
dfMoyenneHoraire['(Qmax-Qmin)/Qmoyen'] = (dfMoyenneHoraire['Débit max horaire']
- dfMoyenneHoraire['Débit min horaire'])/dfMoyenneHoraire['Débit moyen
horaire']
Modifier / Supprimer le messageModifier le message Répondre avec
citationRépondre avec citation Multi-citer ce message 0 0Créer une entrée
Blog
Haut de la page
Les messages affichés proviennent d'usenet.
NewsPortal