Partage
  • Partager sur Facebook
  • Partager sur Twitter

Etiquettes de l'axe d'abscisse d'un graphe

xticks et xlabel

    18 octobre 2022 à 12:41:05

    Salam tout le monde

    mon problème  est le suivant:

    j'obtient un graphe sous python qui représentent quelques données sur des vitesses radiales en fonction des dates.

    le problème que les étiquettes des dates se chevauchent et xlabel "Dates" se place au  milieu de l'axe d'abscisse tout en bas, ce qui influence les dimensions du graphe, en provoquant la disparition d'une toute partie du titre en haut du graphe et la hauteur entre l'axe d'abscisse et le bord bas du graphe devient grande (illustration en bas).

    j aimerai bien que les étiquettes des dates soient toutes affichées, avec la possibilité d'écarter les dates chevauchées et les relier par un trait avec les positions correspondantes sur l'axe d'abscisse. en plus le xlabel "Dates" je veux qu'il soit positionné à droite de l'axe d'abscisse tout près de cette axe et pas en bas comme illustrée en haut pour me débarrasser de l'espace grand entre l'axe d'abscisse et le bord bas.

    le code d'obtention du graphe en haut est le suivant:

    from datetime import datetime as dt

    import matplotlib.pyplot as plt

    from matplotlib import pyplot

    dateS=[]
    for i in DatedeltaOrdFfinalF : 
       Year = i.split('/')[2]
       Day = i.split('/')[0]
       Mou = i.split('/')[1]
       dateS.append(Day.split('-')[0]+'/'+             Mou.split('-')[0]+'/'+ Year.split('-')[0])
            
    diff=[]
    for i in range(len(dateS)) :
       diff.append((dt.strptime(dateS[i], "%d/%m/%Y") - dt.strptime(dateS[0], "%d/%m/%Y")).days)
                        
            
    
    X=['3-4-5/8/1994', '5-6/9/1995', '24-25-26/6/1996', '31-1-2/7-8/1996', '5-6-7/8/1997', '8-9-10/8/1997', '29-30-31/8-9/1997', '28-29-30/10/2015', '19-20-21-22/6/2016']
    
    Y1=[94.89, 86.32, 98.55, 89.06, 88.12, 97.14, 89.21, 96.72, 82.76] 
    
    Y2=[86.32, 96.72, 89.06, 88.12, 97.14, 94.89, 82.76, 89.21, 98.55]
    
    Y3=[63.25, 59.39, 62.43, 51.88, 56.75, 62.79, 66.68, 64.22, 50.11]
    
    Y4=[59.39, 64.22, 51.88, 56.75, 62.79, 63.25, 50.11, 66.68, 62.43]
    
    plt.plot(diff, Y1, 'o',color='red')
    plt.plot(diff, Y2, 'o',color='red')
    plt.plot(diff, Y3, 'o',color='red')
    plt.plot(diff, Y4, 'o',color='red')
    
    plt.title(Hα 𝛌4861.3 Å-FeII 𝛌4923.921 Å, fontsize=15)
    plt.xlabel(Dates,size=11)
    plt.ylabel(RV Amp - ΔRV (Km.s-1),size=11) 
    
    plt.xticks(diff, X, rotation=80, fontsize=8)
    

    Merci la communauté pour l'aide

    -
    Edité par youssef2_41 18 octobre 2022 à 12:43:20

    • Partager sur Facebook
    • Partager sur Twitter
      18 octobre 2022 à 14:54:39

      Si ça ne dérange pas que l'axe X ne soit pas proportionnel aux années, remplacer diff par X dans tes plt.plot peut donner un truc lisible.

      Mais je ne pense pas que c'est ce que tu recherches

      • Partager sur Facebook
      • Partager sur Twitter
        18 octobre 2022 à 18:27:39

        Merci umfred pour ta réponse non je voulais mettre en évidence la vraie différence entres les dates aussi car c'est importante pour l'étude que je mène concernant la dynamique de l'atmosphère d'une étoile. ce que je veux exactement s'il est possible d'écarter les étiquettes chevauchées en les reliant par un trait avec les petits traits sur l'axe d'abscisse indiquant la vraie position de la date, pour juste montrer les  étiquettes des dates sur le graphes un truc comme ça :

        comme l'indique la flèche en noir ( j'ai fait le décalage avec Paint)  est ce que les deux dates précédemment chevauchées peuvent être séparé comme ça grâce à python à chaque fois qu'il y a chevauchement?

        merci d'avance

        • Partager sur Facebook
        • Partager sur Twitter

        Etiquettes de l'axe d'abscisse d'un graphe

        × 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