web-dev-qa-db-fra.com

Tracé d'horodatage (heure/minute/seconde) avec Matplotlib

Je veux tracer des horodatages (format Année-mois-jour Heure-Minute-Seconde). J'utilise le code suivant, cependant, il ne montre aucune information heure-minute-seconde, il leur indique 00-00-00. J'ai vérifié deux fois mon tableau de dates et, comme vous pouvez le voir dans l'extrait ci-dessous, ils ne sont pas nuls.

Avez-vous une idée de la raison pour laquelle je reçois 00-00-00?enter image description here

import matplotlib.pyplot as plt
import matplotlib.dates as md
import dateutil

dates = [dateutil.parser.parse(s) for s in datestrings]
# datestrings = ['2012-02-21 11:28:17.980000', '2012-02-21 12:15:32.453000', '2012-02-21 23:26:23.734000', '2012-02-26 17:42:15.804000']
plt.subplots_adjust(bottom=0.2)
plt.xticks( rotation= 80 )
ax=plt.gca()
xfmt = md.DateFormatter('%Y-%m-%d %H:%M:%S')
ax.xaxis.set_major_formatter(xfmt)
plt.plot(dates[0:10],plt_data[0:10], "o-")
plt.show()
10
user1048858

Essayez d’agrandir votre graphique, vous verrez les dates-heures s’étendre à mesure que l’échelle de votre axe x change.

traçage des horodatages Unix dans matplotlib

J'ai eu un problème similaire ennuyeux lorsque j'essayais de tracer des cartes thermiques de sélection positive sur des chromosomes. Si je zoomais trop loin, les choses disparaîtraient complètement! 

edit: Ce code trace vos dates exactement comme vous les donnez, mais n’ajoute pas de ticks entre les deux.

import matplotlib.pyplot as plt
import matplotlib.dates as md
import dateutil

datestrings = ['2012-02-21 11:28:17.980000', '2012-02-21 12:15:32.453000', '2012-02-21 23:26:23.734000', '2012-02-26 17:42:15.804000']
dates = [dateutil.parser.parse(s) for s in datestrings]

plt_data = range(5,9)
plt.subplots_adjust(bottom=0.2)
plt.xticks( rotation=25 )

ax=plt.gca()
ax.set_xticks(dates)

xfmt = md.DateFormatter('%Y-%m-%d %H:%M:%S')
ax.xaxis.set_major_formatter(xfmt)
plt.plot(dates,plt_data, "o-")
plt.show()
8
seth

Je peux vous dire pourquoi il montre 00:00:00. C'est parce que c'est l'heure de début de ce jour particulier. Par exemple, une coche correspond au 2012-02-22 00:00:00 (minuit du 2012-02-22) et une autre au 2012-02-23 00:00:00 (minuit du 2012-02-23). ). 

Les ticks pour les horodatages entre ces deux heures ne sont pas affichés. 

J'essaie moi-même de comprendre comment afficher les tiques entre ces moments.

1
mintchip36