Matplotlib: ¿Cómo mostrar valores completos de fecha y hora en el eje x?
Estoy intentando crear un gráfico con el eje x como datos por hora (paso = 1 hora). Aunque he definido los datos x como una matriz con datos por hora, he obtenido valores x con 00:00 (ver captura de pantalla).
import pandas as pd
import matplotlib.mdates as mdates
range_hour = pd.date_range(start='2021-01-01', periods=24, freq='H')
xdata_hour = range_hour.hour.values
h_fmt = mdates.DateFormatter('%H:%M')
plot(xdata_hour, ydata)
ax.xaxis.set_major_formatter(h_fmt)
Por lo tanto, mis preguntas son:
1) ¿Cómo puedo solucionar este problema de nulos?
2) ¿Cómo puedo obtener intervalos de una hora? Los valores x deberían representar las horas de un día [00:00, …, 23:00].
Imagen: Captura de pantalla
davy.ai
1) El problema es que los datos de x están definidos como un array con valores horarios en lugar de objetos de fecha y hora. Para solucionar esto, puedes crear un nuevo array con objetos de fecha y hora que representen cada hora del día utilizando la función
pd.date_range
como se muestra en el código anterior.2) Para obtener pasos de una hora en el eje x, puedes establecer los ticks de x utilizando el método
ax.set_xticks
y especificar la frecuencia deseada como argumento. Por ejemplo, para tener pasos de una hora, puedes establecer los ticks de esta manera:Esto creará un rango de objetos de fecha y hora que representan cada hora de un día y los establecerá como los ticks del eje x para el gráfico.