L'échelle logaritmique ne se met pas partout dans un multiplot

a marqué ce sujet comme résolu.

Bonjour, j'ai un petit problème avec pyplot. Je suis en train de faire un ensemble de graphiques qui extraient une semaine de stat générés par la prod de mon stage.

Je lance donc les requêtes adéquates, je crée un multiplot pour afficher un graphique par jour étudié. Seulement voilà, quoi que je fasse, l'échèle logarithmique n'est pas appliquée sur le dernier graphique.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
for k, v in data.iteritems():
    plt.hold(False)
    plt.yscale("log")
    h = np.linspace(0,23,300)
    plt.subplot(len(data)//2 + 1, 2, int(k) - 9) # les jours commencent à 10
    plt.plot(h, spline(range(0,24), v['data1000000000'], h), label = u"Toutes données acceptées" )
    plt.hold(True)
    plt.plot(h, spline(range(0,24), v['data7776000'], h), label = u"Déclenchement à 3 mois" )
    plt.hold(True)
    plt.plot(h, spline(range(0,24), v['data300'], h), label = u"Déclenchement à 5min" )
    date = datetime.date(2015, 03, k)
    plt.title(u"Temps moyen de remontée le {} en fonction de l'heure de notification".format(date.strftime("%A %d %B %Y")))
    plt.legend()

fig.set_size_inches(20, 30) 
fig.savefig("graph_avg/avg_week.png", dpi=100)

Et j'obtiens :

courbes

PS : non, je n'ai aucune données négatives

Et si tu utilisais plt.semilogy() plutot que plt.plot() ?

edit:

sinon tu devrais faire à la place des lignes 3 et 5:

1
2
ax = plt.subplot(len(data)//2 + 1, 2, int(k) - 9) # les jours commencent à 10
ax.set_yscale("log")

Ou enfin simplement passer ta ligne 3 après ta ligne 5. Quand tu utilise pylab tu es dans une machine à état et donc ta ligne 3 s'applique au dernier axe définit. Or tu ne crée un nouvel axe qu'a la ligne 5. Pour que le scale s'applique à chaque itération tu dois le définir APRES le subplot

+1 -0

En fait ce qui m'intéresserait bien perso ce sont les graphes joints, les graphes kde, bref tout ce qui permet de faire des corrélations.

Bien évidemment, j'aurais bien aimé, avant de me tromper savoir que pyplot/matplotlib est une machine à état, mais si on veut éviter le reccueil de TEA, alors effectivement, ça peut être sympa de parler des graphes non courants.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte