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 :

[DEB] Comment ajuster la taille de la grille sans changer la graduation sur un graphique matplotlib [Python 3.X]


Sujet :

Python

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2012
    Messages : 112
    Points : 98
    Points
    98
    Par défaut [DEB] Comment ajuster la taille de la grille sans changer la graduation sur un graphique matplotlib
    Bonjour à toutes et à tous ,
    J'essaye de faire afficher par python une grille plus fine que celle proposée automatiquement.
    J'utilise yticks et xticks pour définir le pas des graduations donc de la grille . Cela marche mais l'affichage des graduations est insupportable. Les graduations automatiques suffisaient parfaitement.
    Comment puis je corriger cela
    En vous remerciant de m'avoir consacré de votre temps
    Voici le code
    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
    import numpy as np
    import matplotlib.pyplot as plt
     
    ax=plt.gca()
    xmin,xmax=4,8.2
    ymin,ymax=1.5,4.6
    ax.set_xlim(4,8.2)
    ax.set_ylim(1.5,4.6,3)
    plt.grid()
    plt.show()
    ##################################
    plt.yticks(np.arange(ymin,ymax,0.05))
    plt.xticks(np.arange(xmin,xmax,0.05))
    plt.tick_params(axis = 'x', length = 0)
    plt.grid(color='r', linestyle='--', linewidth=0.75)
    plt.axis([xmin,xmax,ymin,ymax])
    plt.show()

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 735
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 735
    Points : 31 060
    Points
    31 060
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par torquemada Voir le message
    J'essaye de faire afficher par python une grille plus fine que celle proposée automatiquement....les graduations automatiques suffisaient parfaitement.
    Association incompatibles de ces deux affirmations. La première tu dis vouloir quelque chose de différent de ce qui est offert par défaut mais à la seconde tu dis que ce que tu avais par défaut te convient. Finalement où est la réalité ?

    Sinon ton code:
    • ligne 11 ax.set_ylim(1.5,4.6,3) => 3 paramètres alors que la fonction n'en attend que 2 (besoin de tout coller comme ça ? tu aèrerais un peu ton code ce serait plus lisible). Je ne comprends d'ailleurs même pas comment tu peux nous poster un code non testé.
    • ligne 15 plt.yticks(np.arange(ymin,ymax,0.05)) => c'est là que tu définis la finesse de ta grille. Tu veux plus large tu changes "0.05" par une valeur plus grande, tu veux plus serré tu fais l'inverse. Et idem ligne 16.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2012
    Messages : 112
    Points : 98
    Points
    98
    Par défaut
    Merci Sve@r de ta réponse .

    J'ai testé mon fichier et Python ne m'a rien signalé à propos de mon paramètre surnuméraire et a affiché les deux grilles

    Comme une image vaut mille mots , je mets une vue de ce que je voudrais avoir. Ici la graduation ne s'affiche pas pour chaque ligne contrairement à ce qui se passe avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    plt.yticks(np.arange(ymin,ymax,0.05))
    plt.xticks(np.arange(xmin,xmax,0.05))
    (le nuage de points ne fait pas partie de la question)

    En te remerciant

    MeNom : grille.jpg
Affichages : 226
Taille : 108,4 Ko

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 735
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 735
    Points : 31 060
    Points
    31 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par torquemada Voir le message
    J'ai testé mon fichier et Python ne m'a rien signalé à propos de mon paramètre surnuméraire et a affiché les deux grilles
    Intéressant. J'aimerais bien connaitre ta version Python et matplotlib histoire de voir si c'est ton Python qui déconne ou ton matplotlib différent du mien.

    Citation Envoyé par torquemada Voir le message
    je mets une vue de ce que je voudrais avoir. Ici la graduation ne s'affiche pas pour chaque ligne contrairement à ce qui se passe avec
    Ok j'ai compris: tu veux une grille serrée mais une graduation des axes X/Y large.
    Or malheureusement ça ce n'est pas possible.
    La grille qui s'affiche n'est pas une grille "au hasard", elle est en fait la trace des lignes placées aux graduations. 2 graduations = 2 traits, 3 graduations = 3 traits.

    Une grille telle que tu la voudrais impliquerait des lignes sans graduation. Et ça comment le demander ? Le truc n'a pas été prévu dans matplotlib...

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2012
    Messages : 112
    Points : 98
    Points
    98
    Par défaut
    ma version python 3.9.7
    matplotlib 3.7.1

    Ce warning explique peut être pourquoi le programme ne s'est pas bloqué
    Warning (from warnings module):
    File "E:\Users\unknown\Documents\Python_Scripts\a detruiregrille.py", line 8
    ax.set_ylim(1.5,4.6,3)

    MatplotlibDeprecationWarning: Passing the emit parameter of set_ylim() positionally is deprecated since Matplotlib 3.6; the parameter will become keyword-only two minor releases later.

    >>>
    Je me demande comment l'auteur à fait pour la grille mais le code n'est pas publié

    Merci pour tes explications.

  6. #6
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 226
    Points : 4 710
    Points
    4 710
    Par défaut
    bonjour
    Citation Envoyé par torquemada Voir le message
    comment l'auteur à fait pour la grille mais le code n'est pas publié.
    ?? de matplotlib ?

    Bien sûr que le code est public (mais en C)
    Il reste à voir la documentation et, à côté du code source les exemples python

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 735
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 735
    Points : 31 060
    Points
    31 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par torquemada Voir le message
    Ce warning explique peut être pourquoi le programme ne s'est pas bloqué
    Exact, tu es sous P3.9 et moi sous P3.10 ; ton matplotlib est sous 3.7.3 et moi 3.8.3. La notion dépréciée chez-toi a été ensuite supprimée.
    Maintenant si ce 3° paramètre avait une importance à l'époque il en a toujours un maintenant mais il se trouve ailleurs.

    Ceci dit, ça n'a pas de rapport avec ton souci initial qui me semble toujours insoluble. Je n'ai pas l'impression que ton exemple ait été fait avec matplotlib.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/07/2012, 14h36
  2. comment ajuster la taille du tableau dans un DBGrid
    Par tomy_libre dans le forum Débuter
    Réponses: 5
    Dernier message: 22/05/2009, 17h04
  3. Comment ajuster la taille d'une image en background ?
    Par ach152 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 30/10/2008, 01h34
  4. Réponses: 0
    Dernier message: 25/01/2008, 12h21

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