Subplot multiples dans une boucle

Liste des GroupesRevenir à fcl python 
Sujet : Subplot multiples dans une boucle
De : nospam_b.gonzalezvazq (at) *nospam* gmail.com.invalid (BeaGV)
Groupes : fr.comp.lang.python
Date : 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

Date Sujet#  Auteur
23 Mar 22 * Subplot multiples dans une boucle2BeaGV
24 Mar 22 `- Re: Subplot multiples dans une boucle1Nicolas

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal