Varios gráficos en la misma figura, coordenadas de tiempo, usando python.
Estoy intentando trazar múltiples gráficos en la misma figura usando Python. El gráfico debe ser lineal, las coordenadas x representan la hora del día y las coordenadas y coinciden con los valores. Cada gráfico corresponde a una fecha diferente.
Los datos se almacenan dentro de un diccionario. Las claves representan las fechas y los valores contienen 2 listas: la primera coincide con las coordenadas x y la segunda con las coordenadas y.
Por ejemplo:
dict_data = {"4 Abril": [[datetime(1900, 1, 1, 22, 59), datetime(1900, 1, 1, 23, 1), datetime(1900, 1, 1, 23, 8), datetime(1900, 1, 1, 23, 50)], [405, 320, 300, 360]], "5 Abril": [[datetime(1900, 1, 1, 8, 10), datetime(1900, 1, 1, 9, 40), datetime(1900, 1, 1, 11, 8), datetime(1900, 1, 1, 11, 10)], [120, 20, 10, 0]]}
Encontré un artículo en Stack Overflow, “Plotting time in Python with Matplotlib”, pero no fue útil porque el eje x en el gráfico que crearon está en tipo “datetime”, mientras que yo uso “datetime.time” (no quiero que el eje x muestre las fechas). Además, el gráfico que crearon es un gráfico de dispersión, mientras que yo lo necesito lineal.
Esto es lo que intenté:
def multiple_plots(dict_data):
"""
Método para trazar múltiples gráficos en una sola figura.
Recibe un diccionario con la representación de los datos en el archivo CSV.
Cada clave en el diccionario representa una fecha diferente que tendrá su propio gráfico en el gráfico.
"""
for date, coordinates in dict_data.items():
time_coordinates = coordinates[0]
# convirtiendo las coordenadas x al tipo datetime.time a int
x_coordinates = matplotlib.dates.date2num(time_coordinates)
val_coordinates = coordinates[1]
plt.plot(list(map(int, x_coordinates)), list(map(int, val_coordinates)), label=date)
plt.legend(loc='mejor')
plt.show()
davy.ai
Este código parece ir en la dirección correcta. Sin embargo, un problema es que el eje x actualmente muestra números en lugar de la hora del día real. Para solucionar esto, puedes usar la función
xticks
de matplotlib para establecer las etiquetas de los marcadores para mostrar la hora del día como una cadena. Aquí tienes una versión actualizada del código:Este código debería crear una gráfica con un eje x lineal que muestra la hora del día, y líneas separadas para los datos de cada fecha.