Comment tracer des données par rapport à des dates spécifiques sur l'axe des x en utilisant matplotlib
J'ai un jeu de données composé de la date de paires de valeurs. Je veux tracer dans un graphique à barres avec les dates précises de l'axe des abscisses.
Mon problème est que matplotlib
distribue le xticks
sur l'ensemble de la plage de dates; et aussi des parcelles données à l'aide de points.
Les dates sont toutes datetime
objets. Voici un échantillon de la base de données:
data = [(DT.datetime.strptime('2010-02-05', "%Y-%m-%d"), 123),
(DT.datetime.strptime('2010-02-19', "%Y-%m-%d"), 678),
(DT.datetime.strptime('2010-03-05', "%Y-%m-%d"), 987),
(DT.datetime.strptime('2010-03-19', "%Y-%m-%d"), 345)]
Voici un exemple de code exécutable à l'aide de pyplot
import datetime as DT
from matplotlib import pyplot as plt
data = [(DT.datetime.strptime('2010-02-05', "%Y-%m-%d"), 123),
(DT.datetime.strptime('2010-02-19', "%Y-%m-%d"), 678),
(DT.datetime.strptime('2010-03-05', "%Y-%m-%d"), 987),
(DT.datetime.strptime('2010-03-19', "%Y-%m-%d"), 345)]
x = [date for (date, value) in data]
y = [value for (date, value) in data]
fig = plt.figure()
graph = fig.add_subplot(111)
graph.plot_date(x,y)
plt.show()
QUESTION RÉSUMÉ:
Ma situation est plus comme j'ai un Axes
instance de prêt (référencé par graph
dans le code ci-dessus) et je veux faire ce qui suit:
- Faire la
xticks
correspondent à la date exacte de valeurs. J'ai entendu parler dematplotlib.dates.DateLocator
mais je n'ai aucune idée de comment créer un puis de l'associer avec unAxes
objet. - Obtenir plus de contrôle sur le type de graphique (barres, lignes, points, etc.)
source d'informationauteur Kit
Vous devez vous connecter pour publier un commentaire.
Ce que vous êtes en train de faire est assez simple, qu'il est plus facile de simplement à l'aide de l'intrigue, plutôt que de plot_date. plot_date est idéal pour les cas plus complexes, mais la mise en place de ce que vous avez besoin peut être facilement accompli sans elle.
par exemple, Basé sur l'exemple ci-dessus:
Si vous préférez un diagramme en barres, il suffit d'utiliser
plt.bar()
. Pour comprendre comment définir la ligne et le marqueur de styles, voirplt.plot()
Parcelle avec la date d'étiquettes à des marqueurs d'emplacement http://www.geology.wisc.edu/~jkington/matplotlib_date_labels.png