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

Python Discussion :

Adaptation des axes pour les graphiques Python - Matplotlib


Sujet :

Python

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 2
    Par défaut Adaptation des axes pour les graphiques Python - Matplotlib
    Bonjour,

    Je suis actuellement en train de coder sur PYTHON (2.7) et j'ai un problème au niveau de l'utilisation de MATPLOTLIB qui ne me semble pas résolu sur le forum.
    Mon code consiste à calculer une température toute une journée pour des pas de temps de 10s. J'ai ainsi 8635 mesures que je doit tracer et qui fonctionne bien dont voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        plt.figure(2)
        plt.title('Graphique1')
        plt.plot(Time,Températures,'r', label='Température')
        xlabel('temps[s]')
        ylabel('Temperature [deg_C]')
        plt.legend()
        plt.savefig("graphique1")
    Cependant je souhaite adapter l'échelle des abscisses (le temps) et le mettre en heures.
    J'ai déjà tenter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        plt.xticks(Time,['0', '3', '6', '9', '12', '15'])
    Le résultat est qu'il trace cette liste sur les 8635 pas de temps: illisible.
    Sinon j'ai essayer d'adapter l'axe déjà existant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       plt.xticks(arange(7), ["0h", "2h", "4h", "6h", "9h", "12h", "15h"], fontsize=16)
    Sans succès, les étiquettes s'affichent bien mais elles s’agglutine à gauche de l'axe des abscisses et non de façon répartie !

    Avez-vous déjà eu ce problème?
    Si oui comment avez-vous procédez?

    Merci du temps accordé

    Paul

  2. #2
    Membre émérite
    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
    Par défaut
    Salut.
    Modifier les ticks est une bonne piste.
    Tu peux aussi convertir le nombre de secondes en un timedelta, et l'ajouter à une date de référence. Le tracé se fait avec pyplot.plot_date, et l'affichage peut utiliser la méthode autofmt_xdate.
    L'inconvénient est qu'il faut fixer une date de référence, mais comme l'affichage est seulement sur 24h, elle n'a pas d'importance.

    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
    from datetime import datetime, timedelta
    import matplotlib.dates as mdates
    import matplotlib.pyplot as plt
     
    def main():
        ts = list(range(0, 24 * 3600, 10))
        t0 = datetime(2014, 1, 1)
        t_p = [timedelta(seconds=t) + t0 for t in ts]
     
        fig, ax = plt.subplots()
        fig.autofmt_xdate()
        ax.plot_date( t_p, ts)
        plt.show()
     
    if __name__ == '__main__':
        main()
    Edit : sinon avec xticks
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        t2 = list(range(0, 24 * 3600, 3 * 3600))
        plt.xticks(t2, ["0h", "3h", "6h", "9h", "12h", "15h", "18h", "21h", "24h"])

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 2
    Par défaut
    Salut

    Merci pour la réponse __dardanos__ !
    J'ai utilisé ta deuxième méthode qui me semblait plus simple par rapport à mon niveau.
    Cela fonctionne parfaitement !
    En espérant que cela peut aider d'autres personnes.
    Merci du coup de main !

    Au plaisir

    Paul

  4. #4
    Membre très actif Avatar de Kurodiam
    Inscrit en
    Décembre 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 208
    Par défaut
    Comment as-tu fais pour installer Matplotlib ?

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 699
    Par défaut
    Citation Envoyé par Kurodiam Voir le message
    Comment as-tu fais pour installer Matplotlib ?
    Au choix:
    1. il a eu de la chance,
    2. il a suivit les instructions du manuel d'installation,
    3. quelqu'un a fait le boulot pour lui.
    4. autres solutions.


    De toutes façons, si vous avez des soucis pour installer "matplotlib", c'est que vous espérez qu'"autres solutions" s'applique à vous.
    Pourquoi ne pas ouvrir un nouveau topic en racontant les soucis que vous rencontrez? Ce serait plus efficace.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre très actif Avatar de Kurodiam
    Inscrit en
    Décembre 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 208
    Par défaut
    @wiztricks , votre raisonnement est très carré mais je pense pas que la personne concernée a eu juste besoin de chance vu les spécificités apportées par ce module ...
    Pour l'instant , je m'abstiens de trop réfléchir à matplotlib , j'ai d'autres choses à bricoler

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 699
    Par défaut
    Citation Envoyé par Kurodiam Voir le message
    @wiztricks , votre raisonnement est trés carré mais je pense pas que la personne concernée a eu juste besoin de chance vu les spécificités apportées par ce module ...
    Pour l'instant , je m'abstiens de trop réfléchir à matplotlib , j'ai d'autres choses à bricoler
    Pourquoi poser une question si la réponse ne vous intéresse pas?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre très actif Avatar de Kurodiam
    Inscrit en
    Décembre 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 208
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Pourquoi poser une question si la réponse ne vous intéresse pas?

    - W
    Les réponses sont toujours importantes ( faut pas être susceptible comme même ) .Il y'a quelques temps , je voulais réaliser un vrai graphe comme ceux des calculettes graphiques ( et j'ai pas pu donc c'est vrai que matplotlib permet une certaine aisance) .

  9. #9
    P.G
    P.G est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 158
    Par défaut modification tracé dans ax.plot_date
    Bonjour à tous,

    J'ai repris la méthode proposée dans ce fil de discussion pour afficher des données

    en fonction du temps.

    Par contre je n'arrive pas à éviter un gros trait sur mon graphique.

    Comment modifier l'épaisseur ?

    Voilà la liste du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    fig, ax = plt.subplots()
    fig.autofmt_xdate()
    ax.plot_date( t_p, Table_SOC)
    plt.grid(True) 
    plt.show()
    Courbe_SOC_avec_date.pdf


    Merci pour l'aide apportée

    P.G

  10. #10
    Membre émérite
    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
    Par défaut
    Salut,
    Il y a trop de points dans ce graphique; d'où l'aspect compact.
    Si les données proviennent d'une simulation, tu peux augmenter le pas de discrétisation.
    Sinon on peut toujours passer du discret au continue en remplaçant ax.plot_date par ax.plot.

  11. #11
    P.G
    P.G est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 158
    Par défaut
    Bonsoir,

    Merci pour votre réponse.

    Les points proviennent d'un fichier de mesure. Par contre j'ai une autre figure à partir des mêmes
    données simplement il n'y a pas de date en axe des abscisses juste le numéro de l'échantillon et
    voilà ce que j'obtiens avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    n_ordonnees = np.array(Table_SOC)
    n_abcisses = np.array(Table_Abscisse) 
    plt.plot(n_abcisses, n_ordonnees)
    plt.title('Evolution du SOC') 
    plt.yticks([60,65,70,75,80,85,90,95,100,105,110]) 
    plt.grid(True) 
    plt.show()

    Courbe_SOC.pdf

    Or là le tracé est plus fin, pourquoi ils ne se ressemblent pas ?




    Merci pour l'aide.

    P.G

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/04/2015, 19h30
  2. Mettre les types des axes d'un graphique
    Par ToTo13 dans le forum Excel
    Réponses: 11
    Dernier message: 12/11/2008, 13h05
  3. Ajouter un second axe pour les abscisses sur un graphique
    Par developpeur82 dans le forum MATLAB
    Réponses: 4
    Dernier message: 02/04/2007, 15h22
  4. [debutant][JNI]Stocker des objet pour les rappeler plus tard
    Par Celenor dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 28/03/2004, 01h28

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