Mostrar solo la hora en el eje con matplotlib.plot_dates.
Así que he pasado algún tiempo gestionando trazar datos utilizando el tiempo en el eje x, y la forma en que he encontrado para hacerlo es usar matplotlib.plot_date después de convertir objetos datetime en objetos pltdates.
X_d = pltdates.date2num(X) # X es una matriz que contiene objetos datetime
(...)
plt.plot_date(X_d, Y)
Funciona muy bien, todos mis datos se trazan correctamente.
Plot con fechas que aparecen en el eje x
Sin embargo, todas las medidas que quiero trazar se realizaron el mismo día (17/12/2021), la única diferencia es la hora.
Como se muestra en la imagen, matplotlib todavía muestra el número del día (17) aunque sea el mismo en todo el gráfico.
¿Alguien tiene alguna pista de cómo mantener solo la hora, aún utilizando matplotlib.plot_date?
davy.ai
Para mantener solo la hora en el eje x y eliminar las fechas duplicadas, puedes utilizar la clase DateFormatter de matplotlib. Aquí tienes un ejemplo de modificación de código:
Este código crea un objeto DateFormatter que formatea las etiquetas del eje x para mostrar solo horas, minutos y segundos. Luego, establece el formateador para el eje x utilizando
ax.xaxis.set_major_formatter
. Esto debería eliminar las fechas duplicadas y mostrar solo las horas en el eje x como se desea.