IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Calcul scientifique Python Discussion :

Affichage de dates dans graphiques


Sujet :

Calcul scientifique Python

  1. #1
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 13
    Par défaut Affichage de dates dans graphiques
    Bonjour,

    je possède deux vecteurs numpy (<type 'numpy.ndarray'>) de même taille contenant des string. L'un contient des dates de mesures (par exemple '29/04/2011 09:39:01') l'autre des valeurs (par exemple '100.0').

    En utilisant pylab, je peux tracer les valeurs directement en Y avec en X le numéro de mesure (1, 2...) par la commande plot(val). Mais comment afficher ce graphique avec les dates de mesures affichées en X ? Si celà est possible comment optimiser leur affichage (par exemple gérer l'espacement entre chaque date affichée, tourner le texte en oblique, ...)

    Je sèche un peu sur ce problème donc n'hésitez pas si vous voyez une piste de solution à répondre.

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Le plus simple, c'est d'avoir toutes les dates sous la forme d'objets datetime.

    Après, tu vas utiliser les localisateurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import matplotlib.dates as mdates
    import datetime
     
    days = mdates.DayLocator()   # every day
    daysFmt = mdates.DateFormatter( '%Y-%m-%d' )
    Et ensuite, tu vas travailelr sur les axes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        ax.plot( time, data )
     
        ax.xaxis.set_major_locator( days )
        ax.xaxis.set_major_formatter( daysFmt )
    Dans le cas présent, tu n'auras que des indicateurs de jour, il existe un minor_locator qui te permet de mettre des petits traits sur le graphe. C'est ce que j'utilise pour des graphes en production à l'heure actuelle.

    Pour le côté oblique, c'est facile :
    Ca modifie l'affichage du dernier axe utilsié.

  3. #3
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 13
    Par défaut
    Un besoin de complément : qui est "ax" ? (la figure, les axes....).

    Je débute en python, je viens de Scilab & ExcelVB et je suis encore un peu perdu bien que la ressemblance avec Scilab soit forte.

    Merci de votre début de réponse...

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    ax est l'axe sur lequel tu dessines.

  5. #5
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 13
    Par défaut
    Mmm... Commençons par le début. Mes 2 vecteurs de même taille sont des <type 'numpy.ndarray'> contenant des strings (l'un contient des dates par exemple '29/04/2011 09:39:01' que l'on nomera nptime l'autre des valeurs '100.0' nommé npvals ).

    Je dois donc convertir nptime en objet datetime mais comment ? Et puis comment "jouer" avec ses objets datetime (voir des valeurs, calculer des écarts)...?

  6. #6
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 13
    Par défaut
    Je crois que je viens de trouver. Il faut créer une liste contenant les objets date avec le format qui va bien selon le cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    EnvTime = []
    for time_val in time_env:
       time_struct = t.strptime(time_val,'%d/%m/%Y %H:%M:%S')
       time_dt = dt.datetime(*time_struct[0:6])
       EnvTime.append(time_dt)
    Et puis je trace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    fig_env = plb.figure(figsize=(15,5))#figsize : 6*200=1200, 2*200=400
    fig_env.autofmt_xdate()
    ax = fig_env.gca()
    fig_env.autofmt_xdate()#Met les etiquettes de l'axe en oblique
    plb.plot(EnvTime,RH_meas,color='blue',marker='x',markersize=2,linestyle='None')
    days = plb.DayLocator()
    ax.xaxis.set_major_locator(days)#Formater chaque jour
    daysFmt = plb.DateFormatter('%d.%m')
    ax.xaxis.set_major_formatter(daysFmt)

    NB : Ici time_env est le nparray contenant les dates et RH_meas les valeurs à tracer.

  7. #7
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 13
    Par défaut
    Le besoin est comblé. Merci. Résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. affichage de date dans une cellule Excel
    Par darkspoilt dans le forum VBA Access
    Réponses: 3
    Dernier message: 07/08/2007, 10h41
  2. Problème d'affichage de date dans un Label
    Par L'aigle de Carthage dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 04/05/2007, 09h00
  3. Problème d'affichage de date dans une base de donnée
    Par Gouyon dans le forum C++Builder
    Réponses: 7
    Dernier message: 11/04/2007, 07h57
  4. Affichage des dates dans un ListGridView, et tri
    Par mister3957 dans le forum Framework .NET
    Réponses: 4
    Dernier message: 18/03/2007, 11h26
  5. Pb d'affichage de date dans Excel a partir de VB6 !
    Par sebajedi dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 19/01/2007, 09h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo