Estoy pensando en crear una línea de tiempo para mostrar los cambios de estado de algunos artículos.
Para cada elemento, tengo una lista de eventos, por ejemplo:
Estoy usando pandas, y estaba pensando en usar los gráficos de barras horizontales astackdos ( http://pandas.pydata.org/pandas-docs/stable/visualization.html#bar-plots ):
Sin embargo, el gráfico de barras en este caso está respaldado por un dataframe como este:
In [17]: df2 Out[17]: abcd 0 0.865681 0.276997 0.691200 0.077541 1 0.863821 0.465361 0.076636 0.013124 2 0.266339 0.359055 0.237709 0.698812 3 0.880864 0.198044 0.807911 0.889326 4 0.253440 0.080855 0.206936 0.603920 5 0.121422 0.880760 0.492782 0.841651 6 0.151359 0.264984 0.249734 0.136582 7 0.222347 0.007675 0.978766 0.267517 8 0.102839 0.847454 0.775913 0.519219 9 0.118314 0.347371 0.314426 0.308254
No estoy seguro de cuál es la forma más eficiente en pandas de asignar mi cronogtwig de eventos a algo y trazarlo. Supongo que podría convertir las marcas de tiempo en duración (por ejemplo, número de segundos), pero preferiría que el eje x muestre las marcas de tiempo según el primer ejemplo anterior, por lo que puede que no funcione.
¿Hay algo mejor de hacer esto?
fig, ax = plt.subplots() df.plot(kind='barh', stacked=True, ax=ax) ax.set_yticklabels(['A', 'B', 'C', 'D', 'E', 'F']) time = pd.date_range(start=pd.to_datetime('07:00', format='%H:%M'), end=pd.to_datetime('13:00', format='%H:%M'),freq='H') time_x = [dt.strftime('%H:%M') for dt in time] ax.set_xticklabels(time_x) fig.autofmt_xdate() plt.show()