Comment tracer une très simple graphique à barres (Python, Matplotlib) en utilisant l'entrée *.fichier txt?
J'utilise Python 2.7 et matplotlib. J'ai un *.txt fichier de données :
0 14-11-2003
1 15-03-1999
12 04-12-2012
33 09-05-2007
44 16-08-1998
55 25-07-2001
76 31-12-2011
87 25-06-1993
118 16-02-1995
119 10-02-1981
145 03-05-2014
première colonne de mon fichier (chiffres) doit être sur l'axe Y dans mon graphique à barres, et la deuxième colonne de mon fichier (dates) doit être sur l'axe OX dans mon histogramme. Je ne sais pas comment lire le fichier:
OX = []
OY = []
try :
with open('data.txt', 'r') as openedFile :
for line in openedFile :
tab = line.split()
OY.append(int(tab[0]))
OX.append(str(tab[1]))
except IOError :
print("IOError!")
J'ai lu un matplotlib docs mais cela ne m'aide pas. Je tiens également à ajouter des dates, j'ai lu à mon graphique à barres, pour la faire ressembler à
Quelqu'un pourrait-il m'aider?
InformationsquelleAutor mazix | 2012-07-23
Vous devez vous connecter pour publier un commentaire.
Vous parlez d'histogrammes, mais ce n'est pas tout à fait logique. Les histogrammes et les graphiques à barres sont des choses différentes. Un histogramme serait un graphique à barre qui représente la somme des valeurs par an, par exemple. Ici, vous semblez juste pour être après bars.
Voici un exemple complet de vos données qui affiche une barre de pour chaque valeur à chaque date:
Vous devez analyser la date avec
strptime
et de l'ensemble de l'axe x pour utiliser les dates (comme décrit dans cette réponse).Si vous n'êtes pas intéressé à avoir de l'axe des x montrent une échelle de temps linéaire, mais juste envie de bars avec des étiquettes, vous pouvez faire ceci à la place:
EDIT: à la Suite des commentaires, pour toutes les tiques, et, pour eux, être centré, passer de la plage à
set_ticks
(et de les déplacer de la moitié de la largeur de la barre):111
sujet?Ce code va faire ce que vous cherchez. Il est basé sur des exemples trouvés ici et ici.
La
autofmt_xdate()
appel est particulièrement utile pour la prise de l'axe des x étiquettes lisibles.ind = np.arange(len(OY)) NameError: name 'OY' is not defined
Tout d'abord, ce que vous cherchez est un colonne ou diagramme en barres, pas vraiment un histogramme. Un histogramme est faite à partir d'une fréquence de distribution d'une variable continue qui est séparé dans des bacs. Ici, vous avez une colonne contre les étiquettes séparées.
De faire un diagramme à barres avec matplotlib, utilisez le
matplotlib.pyplot.bar()
méthode. Jetez un oeil à cette page de la matplotlib documentation qui explique très bien avec des exemples et des le code source comment le faire.Si il est possible cependant, je voudrais simplement suggérer que pour une tâche simple comme cela, si tu pouvais éviter d'écrire du code qui serait le mieux. Si vous avez n'importe quel tableur cela devrait être un morceau de gâteau parce que c'est exactement ce qu'ils sont, et vous n'aurez pas à "réinventer la roue". Voici l'intrigue de vos données dans Excel:
Je viens de copier vos données à partir de la question, a utilisé l'assistant importation de texte pour le mettre sur deux colonnes, puis j'ai inséré une colonne diagramme.