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 :

tracer une courbe à partir d'un fichier txt


Sujet :

Calcul scientifique Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 54
    Points : 9
    Points
    9
    Par défaut tracer une courbe à partir d'un fichier txt
    Bonjour,


    je cherche comment tracer une courbe avec matplotlib à partir du fichier suivant:

    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
     
    19/06/08	06:00:09	CLVCPTB15002	nvoSpaceTemp	23.97
     
    19/06/08	06:20:09	CLVCPTB15002	nvoSpaceTemp	23.97
     
    19/06/08	06:40:09	CLVCPTB15002	nvoSpaceTemp	23.97
     
    19/06/08	07:00:11	CLVCPTB15002	nvoSpaceTemp	23.97
     
    19/06/08	07:20:04	CLVCPTB15002	nvoSpaceTemp	23.97
     
    19/06/08	07:40:05	CLVCPTB15002	nvoSpaceTemp	23.97
     
    19/06/08	08:00:07	CLVCPTB15002	nvoSpaceTemp	23.97
     
    19/06/08	08:20:10	CLVCPTB15002	nvoSpaceTemp	23.97
     
    19/06/08	08:40:12	CLVCPTB15002	nvoSpaceTemp	23.97
     
    19/06/08	09:00:04	CLVCPTB15002	nvoSpaceTemp	23.97
     
    19/06/08	09:20:06	CLVCPTB15002	nvoSpaceTemp	24.13
     
    19/06/08	09:40:07	CLVCPTB15002	nvoSpaceTemp	24.13
     
    19/06/08	10:00:09	CLVCPTB15002	nvoSpaceTemp	24.01
     
    19/06/08	10:20:10	CLVCPTB15002	nvoSpaceTemp	24.13
     
    19/06/08	10:40:12	CLVCPTB15002	nvoSpaceTemp	24.13
     
    19/06/08	11:00:04	CLVCPTB15002	nvoSpaceTemp	24.01
     
    19/06/08	11:20:05	CLVCPTB15002	nvoSpaceTemp	24.01
     
    19/06/08	11:40:07	CLVCPTB15002	nvoSpaceTemp	24.01
     
    19/06/08	12:00:07	CLVCPTB15002	nvoSpaceTemp	24.01
     
    19/06/08	12:20:08	CLVCPTB15002	nvoSpaceTemp	24.01
     
    19/06/08	12:40:09	CLVCPTB15002	nvoSpaceTemp	24.00
     
    19/06/08	13:00:10	CLVCPTB15002	nvoSpaceTemp	24.00
     
    19/06/08	13:20:11	CLVCPTB15002	nvoSpaceTemp	23.88
     
    19/06/08	13:40:11	CLVCPTB15002	nvoSpaceTemp	23.88
     
    19/06/08	14:00:04	CLVCPTB15002	nvoSpaceTemp	24.01
     
    19/06/08	14:20:07	CLVCPTB15002	nvoSpaceTemp	24.01
     
    19/06/08	14:40:08	CLVCPTB15002	nvoSpaceTemp	24.01
     
    19/06/08	15:00:09	CLVCPTB15002	nvoSpaceTemp	24.02
    je souhaite tracer le graphique en fonction de la seconde colonne (heure) et la derniere (température)

  2. #2
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 92
    Points : 78
    Points
    78
    Par défaut
    *Tu peux utiliser une methode classique:

    • tu va obtenir un tablo contenant a chaque indice une ligne de ton fichier

    • ensuite tu split les espaces de chaque ligne, et tu va donc obtenir un tablo pour chaque ligne qui va contenir


    [19/06/08,06:20:09,CLVCPTB15002,nvoSpaceTemp,23.97]

    *autre methode tu peux utiliser numpy:

    ->En utilisant fromfile() ou loadtxt()
    http://www.scipy.org/Numpy_Example_L...6e424b85d79b67

    Je ne suis pas un specialiste mais j'espere d'avoir donnée des piste

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 54
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    j'ai un problème pour afficher mon graphique voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    from pylab import *
     
    import csv
    fichier= csv.reader(open("detail.txt", "rb"), delimiter="	")
    for ligne in fichier:
        print ligne[1], ligne[4]
        plot[ligne[1]],[ligne[4]],"ro",linewidth=2.0)
     
    grid(True)  
    show()
    J'obtiens l'erreur suivante:

    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
     
    Traceback (most recent call last):
      File "matlab2.py", line 21, in <module>
        plot([ligne[1]],[ligne[4]],"ro",linewidth=2.0)
      File "/usr/lib/python2.5/site-packages/matplotlib/pyplot.py", line 1780, in plot
        ret =  gca().plot(*args, **kwargs)
      File "/usr/lib/python2.5/site-packages/matplotlib/axes.py", line 2654, in plot
        for line in self._get_lines(*args, **kwargs):
      File "/usr/lib/python2.5/site-packages/matplotlib/axes.py", line 404, in _grab_next_args
        for seg in self._plot_3_args(remaining, **kwargs):
      File "/usr/lib/python2.5/site-packages/matplotlib/axes.py", line 380, in _plot_3_args
        func(x[:,j], y[:,j])
      File "/usr/lib/python2.5/site-packages/matplotlib/axes.py", line 361, in makeline
        axes=self.axes,
      File "/usr/lib/python2.5/site-packages/matplotlib/lines.py", line 284, in __init__
        self.set_data(xdata, ydata)
      File "/usr/lib/python2.5/site-packages/matplotlib/lines.py", line 405, in set_data
        self.recache()
      File "/usr/lib/python2.5/site-packages/matplotlib/lines.py", line 410, in recache
        x = ma.asarray(self.convert_xunits(self._xorig), float)
      File "/usr/lib/python2.5/site-packages/numpy/core/ma.py", line 2123, in asarray
        return array(data, dtype=dtype, copy=0)
      File "/usr/lib/python2.5/site-packages/numpy/core/ma.py", line 574, in __init__
        self._data = c.astype(tc)
    ValueError: invalid literal for float(): 06:00:16

    merci de votre aide.

  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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    C'est très clair, non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    invalid literal for float(): 06:00:16
    Comment tu veux que 06:00:16 soit un flottant ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 54
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    je souhaite avoir les heures comme base de temps comment faire ?

  6. #6
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Extrais-les ? (split(":")[0] par exemple)

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 54
    Points : 9
    Points
    9
    Par défaut
    j'ai avancée j'arrive à placée les points sur mon graphique avec le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    from pylab import *
    import csv
     
    fichier= csv.reader(open("detail.txt", "rb"), delimiter="	")
    for ligne in fichier:
     
         print "".join(ligne[1].split(":"))
         plot(["".join(ligne[1].split(":"))],[ligne[4]],"ro",linewidth=2.0)
     
     
    grid(True)  
    show()
    j'aimerais pouvoir relier les points pour formée une courbe et pas un nuage de point

  8. #8
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Crée un tableau numpy avec te spoints et ensuite affiche-le. Là, tu crées une ligne par point, il est donc impossible de les relier

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 54
    Points : 9
    Points
    9
    Par défaut
    tu n'aurait pas un exemple de numpy sois avec mon fichier ou un autre car je suis débutant en python.

    merci

  10. #10
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    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
    from matplotlib import pyplot as plt
    import numpy as np
    import csv
     
    fichier= csv.reader(open("detail.txt", "rb"), delimiter="	")
     
    absisses = []
    ordonnees = []
    for ligne in fichier:
     
         print "".join(ligne[1].split(":"))
         absisses.append(float("".join(ligne[1].split(":"))))
         ordonnees.append(float(ligne[4]))
     
    n_abcisses = numpy.array(absisses)
    n_ordonnees = numpy.array(ordonnees)
     
    plt.plot(n_absisses, n_ordonnees,"-ro",linewidth=2.0)
     
    plt.grid(True)  
    plt.show()
    quelque chose du style.

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 54
    Points : 9
    Points
    9
    Par défaut
    J'ai tester ton script mais il me retourne une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      File "matlab3.py", line 15, in <module>
        n_abcisses = numpy.array(absisses)
    NameError: name 'numpy' is not defined
    j'ai trouver une erreur ligne 15 abcisses au lieu absisses mais toujours la même erreur

  12. #12
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    PArdon, il fallait lire np (ou faire import numpy tout court)

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 54
    Points : 9
    Points
    9
    Par défaut
    c'est nikel ça fonctionne.
    il faut juste que j'améliore l'axe du temps car il représente pas vraiment des heures

    merci

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 54
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    j'ai une autre petit question comment fait t'on pour avoir une échelle principale d'un heure et l'échelle secondaire de 20 min.

    je souhaite afficher l'axe des X au format heure hh:mm:ss j'ai trouver cette fonction

    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
     
    from matplotlib import pyplot as plt
    import numpy 
    import csv
    from pylab import *
     
     
    fichier= csv.reader(open("detail.txt", "rb"), delimiter="	")
     
    absisses = []
    ordonnees = []
    for ligne in fichier:
     
         print "".join(ligne[1].split(":"))
         absisses.append(float("".join(ligne[1].split(":"))))
         ordonnees.append(float(ligne[4]))
     
    n_absisses = numpy.array(absisses)
    n_ordonnees = numpy.array(ordonnees)
     
     
     
    plt.plot(n_absisses, n_ordonnees,"-r",linewidth=1.0)
    #axis([xlim ylim zlim])
    datetick("x",15)
    xlabel("temps")
    ylabel("Temperature")
    title("VCP")
    plt.grid(True)  
    plt.show()

    datetick('x',15) mais ça me retourne une erreur.
    NameError: name 'datetick' is not defined

  15. #15
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Essaie avec plotdate() ou qqch du style. Arrête aussi de faire des from pylab import *, le principe du from matplotlib import pyplot as plt, c'est d'importer de matplotlib uniquement la partie graphique et pas toute la pollution.

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 54
    Points : 9
    Points
    9
    Par défaut
    bonjour

    tu n'aurait pas une idée pour paramétré les échelles.(voir qu'est précédente).

  17. #17
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Bonsoir,

    Je viens de tomber sur ce post qui m'enlève une sacrée épine du pied.
    Je voudrai savoir s'il y a une possibilité pour afficher un titre sur le graphique?

    Les échelles m'intéressent aussi.

    Dernière petite question: y a t-il un moyen pour afficher un curseur qui suit la courbe tracée?

    Je vais essayer de trouver ces solutions, mais si quelqu'un peut m'aiguiller ça serai cool.

    Bonne soirée à tous

  18. #18
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Titre -> plt.title() si je me souviens bien.
    Pour ce qui est des échelles, je ne me souviens plus du tout.

  19. #19
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 92
    Points : 78
    Points
    78
    Par défaut
    Pour le curseur qui suit le tracer de la courbe je suis sur d'avoir vu dans les exemple donnée par matplotlib.
    Est pour les echelles je sais pas ce vous recherché.

  20. #20
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    En ce qui me concerne pour les échelles il s'agit en fait de dire ce qu'il y a sur les abscisses et sur les ordonnées.
    J'ai trouvé une parade temporaire. Je mets ça dans le titre.

    Pour le curseur je vais chercher entre midi et deux.

    Bye

Discussions similaires

  1. Tracer une courbe à partir d'un fichier Excel
    Par jeunehomme dans le forum Scilab
    Réponses: 12
    Dernier message: 12/03/2015, 00h57
  2. Réponses: 5
    Dernier message: 29/09/2014, 23h08
  3. Tracer une courbe à partir d'un fichier .csv
    Par dzonaser dans le forum MATLAB
    Réponses: 2
    Dernier message: 25/10/2008, 14h48
  4. tracer une courbe à partir d'un fichier texte
    Par Kemanke dans le forum MFC
    Réponses: 12
    Dernier message: 18/07/2007, 10h51
  5. dessiner une courbe à partir d'un fichier
    Par olfasupcom dans le forum Langage
    Réponses: 5
    Dernier message: 30/05/2007, 12h15

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