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

Bibliothèques tierces Python Discussion :

lire date dans matplotlib


Sujet :

Bibliothèques tierces Python

  1. #1
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Points : 1 184
    Points
    1 184
    Billets dans le blog
    9
    Par défaut lire date dans matplotlib
    Bonjour, j'ai un graphe avec comme axe des X des dates, quand je veut lire la valeur de x j'ai ceci: 735686.990737

    Au lieu de 7 mars 2015 15H30 et 10 seconde.

    J'ai essayée de la convertir mais sa ne marche pas, sa me mets une date incohérente (1 janvier 1970)

    Voici mon code complet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    from datetime import datetime
    from datetime import timedelta
    import matplotlib
    matplotlib.use('TkAgg')
    *
    from numpy import arange, sin, pi
    from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
    # implement the default mpl key bindings
    from matplotlib.backend_bases import key_press_handler
    from matplotlib.figure import Figure
    *
    import sys
    import tkinter as Tk
    *
    *
    filelist=[]
    filelist.append("1_Ch1_T00Rec__20141127220712.per")
    dates=[]
    datesaxis=[]
    *
    for i in range(0, len(filelist)):
    ****file=filelist[i]
    ****size=len(file)-1
    *
    ****years=file[size-17]+file[size-16]+file[size-15]+file[size-14]
    ****months=file[size-13]+file[size-12]
    ****days=file[size-11]+file[size-10]
    *
    ****hours=file[size-9]+file[size-8]
    ****minutes=file[size-7]+file[size-6]
    ****seconds=file[size-5]+file[size-4]
    *
    ****datetmp=hours+":"+minutes+":"+seconds+" "+months+"/"+days+"/"+years
    ****dates.append(datetmp)
    *
    for d in dates:
    *****dt = datetime.strptime(d,'%H:%M:%S %m/%d/%Y')
    *****datesaxis.append(dt)
    *****for i in range(0, 3600):
    **********dt += timedelta(seconds=1)
    **********datesaxis.append(dt)
    **********#print('{} : {} seconds {} minutes {} hours'.format(datesaxis, dt.second, dt.minute, dt.hour))
    ***********
    *
    taille=len(datesaxis)
    print(taille)
    *
    *
    *
    root = Tk.Tk()
    root.wm_title("Embedding in TK")
    *
    *
    f = Figure(figsize=(5,4), dpi=100)
    a = f.add_subplot(111)
    s=[]
    for i in range(0,3601):
    ****s.append(i)
    *
    a.plot(datesaxis,s)
    *
    *
    canvas = FigureCanvasTkAgg(f, master=root)
    canvas.show()
    canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
    *
    toolbar = NavigationToolbar2TkAgg( canvas, root )
    toolbar.update()
    canvas._tkcanvas.pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
    *
    def mousemove(event):
    ****print(event.xdata)
    *****
    cid = f.canvas.mpl_connect('motion_notify_event', mousemove)
    *
    def on_key_event(event):
    ****print('you pressed %s'%event.key)
    ****key_press_handler(event, canvas, toolbar)
    *
    canvas.mpl_connect('key_press_event', on_key_event)
    *
    def _quit():
    ****root.quit()
    ****root.destroy()
    *
    button = Tk.Button(master=root, text='Quit', command=_quit)
    button.pack(side=Tk.BOTTOM)
    *
    Tk.mainloop()
    Dans la toolbar, j'ai bien x=22:46:50

    Mais sur la console j'ai 735564.933669 par exemple, moi je voudrais récupérer 22:46:50

  2. #2
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Points : 1 184
    Points
    1 184
    Billets dans le blog
    9
    Par défaut
    Mon problème pourrais t'il venir de la récupération de la date ?

    matplotlib pourtant m'affiche la date correctement.



    J'ai essayer avec des datetime comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    d = datetime(2013, 12, 22, 11, 30, 59)
    mais sans succes.

  3. #3
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Points : 1 184
    Points
    1 184
    Billets dans le blog
    9
    Par défaut
    N'y a t'il pas de solution ?

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    Et ben c'est tout simple. Il faut utiliser matplotlib.dates.num2date pour convertir le nombre en date.

  5. #5
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Points : 1 184
    Points
    1 184
    Billets dans le blog
    9
    Par défaut
    Merci, sa marche !

    Y'a juste un problème, je ne veut pas micro seconde, j'ai tenter de les enlever,avec ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	new_x = dates.num2date(event.xdata)
    	new_x = new_x.replace(microsecond=0)
    	print(new_x)
    Mais voila ce que j'obtient:
    2013-12-22 11:50:26+00:00

    Moi je veut juste:
    2013-12-22 11:50:26

    sans le +00:00 es ce possible ?

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    La valeur retournée se traite comme n'importe quelle datetime.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> from matplotlib import dates as mdates
    >>> t = 735564.933669
    >>> mdates.num2date(t)
    datetime.datetime(2014, 11, 27, 22, 24, 29, 1604, tzinfo=<matplotlib.dates._UTC object at 0xb5fdaeec>)
    >>> mdates.num2date(t).strftime("%Y-%m-%d %H:%M:%S")
    '2014-11-27 22:24:29'
    >>>

  7. #7
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Points : 1 184
    Points
    1 184
    Billets dans le blog
    9
    Par défaut
    ok merci je ne savais pas.

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

Discussions similaires

  1. [Débutant] Lire date de fichier dans archive .rar
    Par frag132 dans le forum VB.NET
    Réponses: 4
    Dernier message: 21/05/2012, 15h25
  2. lire date dans cellule et compter les jours
    Par biche1 dans le forum Excel
    Réponses: 6
    Dernier message: 29/09/2008, 16h41
  3. test la valeur d'une date dans une requete
    Par TuxP dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/01/2004, 14h53
  4. Transformation de date dans une procédure stockée
    Par bd0606 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 27/10/2003, 11h31
  5. Réponses: 3
    Dernier message: 19/03/2003, 15h19

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