Partage
  • Partager sur Facebook
  • Partager sur Twitter

Echelle semi-log

Courbe d'intensité en fonction du temps

Sujet résolu
    22 juin 2021 à 22:06:05

    Bonsoir,

    Je vous écris ce message afin de vous demander s'il est possible que vous puissiez vérifier mon code concernant la conversion des valeurs dans la liste y en échelle semi-log.

    Ainsi, étant débutant sur Python, je mets ci-dessous mon code.

    Voici ci-dessous mon code :

    ############################################################################################################################
    #Courbe d'intensité
    ############################################################################################################################
    #Importation de données d'un fichier CSV
    
    #Importation du module numpy afin de lire le contenu du fichier csv et simplification en np
    import numpy as np
    
    #Importation du module matplotlib.pyplot pour construire le graphique et simplification en plt
    import matplotlib.pyplot as plt
    
    #Importation du module log de la bibliothèque math afin de convertir les counts en échelle semi-log
    from math import log
    
    #Recherche des coordonnéees des points dans le fichier csv
    #Les données sont séparées par des " " à  partir de la 1 ère ligne (notée 0)
    pointage = np.loadtxt("em9_int.csv",delimiter=' ',skiprows=0)
    
    #Lecture des abscisses x issues de la première colonne (notée 0) du fichier csv
    #Les données se retrouveront dans un tableau d'une ligne
    x=pointage[:,0]
    
    #Lecture des ordonnées y issues de la deuxième colonne (notée 1) du fichier csv
    #Les données se retrouveront dans un tableau d'une ligne
    y=pointage[:,1]
    Y = [log(x) for x in y] # Conversion des counts dans y en échelle semi-log
    
    print(type(y))
    print("Abscisses x en s :",x)
    print("Ordonnées y en counts/10 ms :",y)
    
    
    #Affiche un repère othonormal
    #plt.axis('equal')
    plt.axis([0,200,0,5.0]) # A mettre en commentaire si l'on veut la courbe d'intensité initiale sans zoom
    
    #plt.title("Emitter 1 intensity spectrum")  # Affiche le titre
    plt.xlabel('Time (s)')           # Affiche la légende sur l'axe des abscisses
    plt.ylabel('Intensity (counts/10 ms)')         # Affiche la légende sur l'axe des ordonnées
    plt.plot(x,Y,"b-")               # Trace une liaison entre les points en bleu
    plt.show()                        # Montre le graphique à l'écran

    Voici ci-dessous la courbe de l'intensité en fonction du temps :

    Pour finir, pourriez-vous me dire si ma ligne de code Y = [log(x) for x in y] est bon, s'il vous plaît ?

    Répondez-moi quand vous aurez du temps libre.

    Je vous en serai très reconnaissant.

    Merci de votre compréhension.

    • Partager sur Facebook
    • Partager sur Twitter
      22 juin 2021 à 22:23:38

      Non. Le mieux est de ne pas toucher à tes données, mais de dire à matplotlib d'utiliser une échelle logarithmique

      plt.yscale('log')



      • Partager sur Facebook
      • Partager sur Twitter
        22 juin 2021 à 22:26:55

        Aussi je pense que tu vas avoir un problème à un moment ou un autre en nommant 2 variables différentes "x", ligne 21 et 26. Ton x ligne 21 va être écrasé par le x de la ligne 26.

        -
        Edité par Coliculus 22 juin 2021 à 22:27:22

        • Partager sur Facebook
        • Partager sur Twitter
          22 juin 2021 à 22:28:31

          Coliculus a écrit:

          Je pense que tu vas avoir un problème à un moment ou un autre en nommant 2 variables différentes "x", ligne 21 et 26. Ton x ligne 21 va être écrasé par le x de la ligne 26.


          Non, aucun risque, le scope des deux x n'étant pas le même. Le x de la ligne 26 n'a d'existence que dans la liste en compréhension.
          • Partager sur Facebook
          • Partager sur Twitter
            22 juin 2021 à 22:35:35

            Bonsoir,

            Je vous écris ce message afin de vous informer que le problème est résolu.

            Merci.

            • Partager sur Facebook
            • Partager sur Twitter

            Echelle semi-log

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown