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 :

Graphique : graduations qui se superposent sur l'axe des x et superposition légende/courbe


Sujet :

Calcul scientifique Python

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Graphique : graduations qui se superposent sur l'axe des x et superposition légende/courbe
    Bonsoir et merci d'avance pour vos réponses,

    Je travaille actuellement sur des graphiques qui retracent l'évolution des bactéries en fonction de la température. Le problème est que je réalise des mesures toutes les secondes, et qu'au bout du compte les annotations sur l'axe des abscisses se superposent parce que j'ai beaucoup de points. À la limite, il suffirait de n'en garder que quelques unes à intervalle constant pour que cela fonctionne.
    J'ai essayé : xticks(np.linspace(tempsTable2[0],int(max(tempsTable2)+m),9,endpoint=True)) mais cela me change complètement mon échelle.

    Ce que je voudrais est donc conserver mon échelle en supprimant une bonne partie des annotations afin d'y voir encore quelque chose..

    D'autre part, y a-t-il une requête qui déplace automatiquement la légende pour ne pas qu'elle se superpose aux courbes ?

    Clarisse

  2. #2
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Salut,

    Bienvenue sur le forum.

    Tu ne fournis pas les infos de base:
    =>OS
    =>Version précise de Python
    =>Lib utilisée et sa version
    =>Code complet (utilise le bouton # quand tu edite ton post)

    Sans ces éléments nous sommes incapables de t'aider
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Merci !

    OS : Windows 8
    Python : 2.7.8
    Pour la librairie je n'ai rien installé en plus de Python

    Voici mon code pour le graphique sachant que je récupère les temps et températures sur MySQL:
    ##TEMPERATURE (COURBE)
    m=tempsTable[1]-tempsTable[0]
    plt.plot(tempsTable, TempeTable, "r", lw=2)
    plt.axis([int(tempsTable[0]), int(max(tempsTable)+m), min(int(min(TempeTable))-0.5,(Tref-0.5)), max(int(max(TempeTable)+0.5), Tref+0.5)])
    plt.ylabel('Temperature (C)')
    plt.title('Evolution de la temperature au cours du temps')
    plt.xlabel('Temps (s)')
    plt.plot(x, Tref+0*x, 'k--', lw=4, label='Tref')
    plt.xticks(tempsTable, date, rotation='vertical')
    legend()
    plt.show()

    J'espère avoir été assez précise, je suis débutante

  4. #4
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    C'est mieux.

    Par contre coté lib, je pense que tu travailles avec matplotlib, au vu du code. As tu regardé ICI?
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Oui, j'ai essayé ça :
    # xticks(np.linspace(-4,4,9,endpoint=True))

    Pour les graduations qui se superposent mais cela me modifie mon échelle

    et pour la légende :
    #legend(loc='upper left')

    est une manière "manuelle" de la déplacer, je souhaitais savoir si cela pouvait se faire automatiquement afin de s'adapter à n'importe quel jeu de données.

  6. #6
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Alors pour la légende, la réponse est ICI. C'est pas toujours genial, mais au moins tout est automatique

    Concernant matplotlib, d'après ce que j'ai pu lire, c'est matplotlib qui décide quoi afficher dans les infos qui lui sont passées. Donc pour moi ce n'est pas faisable. Mais je peux me tromper. Peut être que quelqu'un d'autre aurait une solution???
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  7. #7
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup !

    J'avais effectivement pensé à afficher une annotation sur 100 par exemple mais je n'ai pas trouvé la solution !

  8. #8
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Et il semblerait que la solution miracle n'existe pas.

    Je te conseillerais de faire du moyennage. Tu attends d'avoir x valeur, tu en fait la moyenne et tu l'affiches. Tu auras ainsi un effet similaire dans le rendu graphique
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  9. #9
    Membre à l'essai
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Juin 2014
    Messages : 11
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    Pour limiter le nombre de ticks (par exemple à 25) sur ton abscisse, tu peux utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plt.locator_params(axis='x', nbins=25)

  10. #10
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    C'est effectivement faisable deusyss !

    La proposition de PetitChameau correspond exactement à ce qu'il me faut mais j'obtiens l'erreur suivante :

    #
    plt.locator_params(axis='x', nbins=25)
    File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 2840, in locator_params
    ret = gca().locator_params(axis, tight, **kwargs)
    File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 2224, in locator_params
    self.xaxis.get_major_locator().set_params(**kwargs)
    AttributeError: FixedLocator instance has no attribute 'set_params'

    Y a-t-il d'autres lignes de code à insérer?

    Merci !

  11. #11
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Pour poster du code, utilise le bouton "#" en haut à droite quand tu écris un post.

    Au vu de ton message, il semblerait que l'erreur ai eu lieu dans la lib directement.

    En cherchant la ligne en cause, on tombe sur le forum officiel: http://matplotlib.1069221.n5.nabble....s-td44072.html

    Une issue a été ouverte recemment il semblerait. C'ets un bug en attente de resolution.

    Donc solution de contournement, ou alors régresse dans la version de la lib, cela peux peut être fonctionner.
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  12. #12
    Membre à l'essai
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Juin 2014
    Messages : 11
    Points : 16
    Points
    16
    Par défaut
    Je ne suis pas experte matplotlib mais j'ai pas mal bataillé avec des dates en abscisses dernièrement.

    Peux-tu nous dire à quoi ressemblent les temps que tu affiches sur l'axe des abscisses ?

    Il y a des moyens de spécifier le Locator que tu veux utiliser (et même de le personnaliser). Il existe notamment l'api dates (ici).

  13. #13
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    D'accord merci !!

    Oui bien sûr, c'est un format H:M avec le temps initial qui part de 0 et l'expérience dure entre 12 et 48 heures.
    Merci pour cette info !

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/07/2014, 22h19
  2. [XL-2007] Introduire des sauts sur l'axe des ordonnées dans un graphique
    Par lchauvet1 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/06/2011, 10h49
  3. [XL-2007] Report d'une valeur sur l'axe des ordonnées d'un graphique
    Par cynoq dans le forum Excel
    Réponses: 10
    Dernier message: 11/01/2010, 12h01
  4. Réponses: 2
    Dernier message: 19/12/2007, 17h25
  5. [excel]échelle log sur l'axe des X
    Par breizhou dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/07/2006, 17h49

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