Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème d'affichage des coordonnées (x,y)

Sujet résolu
2 septembre 2021 à 11:45:43

Bonjour à tous, 

Je rencontre un problème. Depuis plusieurs heures, je tente d'y trouver une solution, après réflexion et plusieurs essais, en vain. Le programme est simple. Le problème se situe sur le programme du haut. Je précise que les données manipulées sont identiques dans les deux programmes, seule l'approche change. 

1ere étape : extraction de données contenues dans deux fichiers textes intitulés respectivement "Temps" et "Dépenses". 

2ème étape : affichage des coordonnées (x,y) dans un graphique en diagramme en bâtons.  

Problème constaté : observez les deux programmes. Ils permettent d'obtenir le même résultat en théorie. Les variables x et y sont du même type : liste. Or le résultat trouvé est différent en terme d'affichage des coordonnées (x,y).  

Je n'arrive pas à déterminer l'origine du problème. 

Je vous remercie de votre aide. 

Approche1Approche2

-
Edité par LHH_120 2 septembre 2021 à 11:48:07

  • Partager sur Facebook
  • Partager sur Twitter
2 septembre 2021 à 11:53:24

y est une liste de float, mais liste_y est une liste de str

Sinon :  évite les import *, surtout plusieurs dans un même fichier, et ouvre tes txt avec with.

  • Partager sur Facebook
  • Partager sur Twitter
2 septembre 2021 à 14:49:18 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


2 septembre 2021 à 15:18:03

regarde ton échelle des y sur la 1ère figure, tu ne remarques pas que ce n'est pas dans l'ordre numérique ? (dû au fait que liste_y soit une liste de chaine)
  • Partager sur Facebook
  • Partager sur Twitter
3 septembre 2021 à 9:50:44

Oui c'est ce que je voulais dire, les str et les float ne se trie évidemment pas de la même manière.

Tu dois donc convertir tes str en float :

with open("Dépenses.txt") as file:

    liste_y = [float(line) for line in file]


D'ailleurs pour liste_x tu pourrais aussi convertir en datetime.date et utiliser le monthformatter de matplotlib

  • Partager sur Facebook
  • Partager sur Twitter
3 septembre 2021 à 9:58:51

Bonjour,

Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

Pour plus d'informations, nous vous invitons à lire les règles générales du forum

Merci de colorer votre code à l'aide du bouton Code

Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Code de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: python;">Votre code ici</pre>.

Merci de modifier votre message d'origine en fonction.

Liens conseillés

  • Partager sur Facebook
  • Partager sur Twitter
3 septembre 2021 à 13:37:18

Bonjour,

Si bien sûr j'ai remarqué que les valeurs en ordonnée ne sont pas classées en ordre croissant mais je ne l'ai pas précisé dans mes précédents messages. 

Je constate que ça marche ! Avant de poster ces messages, j'avais effectivement rangé en ordre croissant les valeurs en ordonnée mais cela n'avait rien changé. Je ne pensais pas que cela aurait une incidence sur la représentation graphique. Pourtant une question subsiste : dans l'autre programme pourquoi n'est-il pas nécessaire de ranger les y en ordre croissant dans la mesure où je ne les range pas et que le résultat obtenu est celui espéré ?  Là je dois partir, je vais revenir dans 2H puis je vais étudier ça dans les détails. 

Merci de votre coup de pouce messieurs. 

  • Partager sur Facebook
  • Partager sur Twitter
3 septembre 2021 à 14:07:12

encore une fois, parce que ce sont des nombres (type float) et non pas des chaines de caractères
  • Partager sur Facebook
  • Partager sur Twitter
3 septembre 2021 à 16:18:30

Je m'y suis penché dessus. Je n'ai pas vu que l'absence de conversion de la liste de chaîne de caractère "liste_y" en liste de float est en soit le problème puisque les données lues dans le fichier texte sont lues comme des chaînes de caractère. C'est bon pour moi. 

Merci. 

  • Partager sur Facebook
  • Partager sur Twitter