Странное поведение Matplotlib при построении временной шкалы с помощью plt.barhPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Странное поведение Matplotlib при построении временной шкалы с помощью plt.barh

Сообщение Anonymous »

У меня есть DataFrame событий. Я хочу построить график этих событий, чтобы показать временную шкалу на один день.
event_start event_end event_type
0 2024-09-12 21:59:00 2024-09-13 05:09:00 Stop
1 2024-09-13 01:26:00 2024-09-13 02:00:00 Farming
2 2024-09-13 02:00:00 2024-09-13 02:35:00 Active
3 2024-09-13 02:35:00 2024-09-13 06:11:00 Farming
4 2024-09-13 02:35:00 2024-09-13 06:11:00 Farming
5 2024-09-13 06:11:00 2024-09-13 07:27:00 Active
6 2024-09-13 07:27:00 2024-09-13 07:47:00 Stop
7 2024-09-13 07:47:00 2024-09-13 08:00:00 Active
8 2024-09-13 08:00:00 2024-09-13 08:06:00 Stop
9 2024-09-13 08:06:00 2024-09-13 08:07:00 Active
10 2024-09-13 08:07:00 2024-09-13 08:16:00 Stop
11 2024-09-13 08:16:00 2024-09-13 08:18:00 Active
12 2024-09-13 08:18:00 2024-09-13 08:45:00 Stop
13 2024-09-13 08:45:00 2024-09-13 09:00:00 Active
14 2024-09-13 09:00:00 2024-09-13 09:31:00 Stop
15 2024-09-13 09:31:00 2024-09-13 10:24:00 Active
16 2024-09-13 10:24:00 2024-09-13 10:32:00 Stop
17 2024-09-13 10:32:00 2024-09-13 10:37:00 Active
18 2024-09-13 10:37:00 2024-09-13 16:29:00 Stop
19 2024-09-13 16:29:00 2024-09-13 16:34:00 Active

Я попробовал построить график с помощью matplotlib.pyplot.barh, но последнее событие, начиная с 16:29 и заканчивая 16:34 (активное), отображается как блок с 16:39. примерно до 18:30. Не могу понять почему.
Я использую функциюplot_timeline.
def plot_timeline(events):
df_events = events

plt.figure(figsize=(12, 6))

for _, row in df_events.iterrows():
color_map = {
'Active': 'lightblue',
'Idling': 'red',
'Stop': 'black',
'Farming': 'green'
}
print(f"start : {row['event_start']}, end : {row['event_end']}, type : {row['event_type']}")
plt.barh(y=0, width=(row['event_end'] - row['event_start']).total_seconds() / 3600,
left=row['event_start'],
color=color_map.get(row['event_type'], 'lightblue'))

plt.xlim(pd.to_datetime(f"{df_events['event_start'].dt.date.iloc[-1]} 04:00"),
pd.to_datetime(f"{df_events['event_start'].dt.date.iloc[-1]} 23:00"))

plt.gca().xaxis.set_major_locator(mdates.HourLocator(interval=1))
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))

plt.title('Timeline of Events')
plt.xlabel('Time')
plt.yticks([])
plt.grid(axis='x', linestyle='--', alpha=0.7)
plt.tight_layout()
plt.show()
plot_timeline(events)

Изображение

( РЕДАКТИРОВАТЬ): вывод на печать
start : 2024-09-12 21:59:00, end : 2024-09-13 05:09:00, type : Stop
start : 2024-09-13 01:26:00, end : 2024-09-13 02:00:00, type : Farming
start : 2024-09-13 02:00:00, end : 2024-09-13 02:35:00, type : Active
start : 2024-09-13 02:35:00, end : 2024-09-13 06:11:00, type : Farming
start : 2024-09-13 02:35:00, end : 2024-09-13 06:11:00, type : Farming
start : 2024-09-13 06:11:00, end : 2024-09-13 07:27:00, type : Active
start : 2024-09-13 07:27:00, end : 2024-09-13 07:47:00, type : Stop
start : 2024-09-13 07:47:00, end : 2024-09-13 08:00:00, type : Active
start : 2024-09-13 08:00:00, end : 2024-09-13 08:06:00, type : Stop
start : 2024-09-13 08:06:00, end : 2024-09-13 08:07:00, type : Active
start : 2024-09-13 08:07:00, end : 2024-09-13 08:16:00, type : Stop
start : 2024-09-13 08:16:00, end : 2024-09-13 08:18:00, type : Active
start : 2024-09-13 08:18:00, end : 2024-09-13 08:45:00, type : Stop
start : 2024-09-13 08:45:00, end : 2024-09-13 09:00:00, type : Active
start : 2024-09-13 09:00:00, end : 2024-09-13 09:31:00, type : Stop
start : 2024-09-13 09:31:00, end : 2024-09-13 10:24:00, type : Active
start : 2024-09-13 10:24:00, end : 2024-09-13 10:32:00, type : Stop
start : 2024-09-13 10:32:00, end : 2024-09-13 10:37:00, type : Active
start : 2024-09-13 10:37:00, end : 2024-09-13 16:29:00, type : Stop
start : 2024-09-13 16:29:00, end : 2024-09-13 16:34:00, type : Active


Подробнее здесь: https://stackoverflow.com/questions/790 ... h-plt-barh
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Странное поведение Matplotlib при построении временной шкалы с помощью plt.barh
    Anonymous » » в форуме Python
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Является ли "из Matplotlib import pyplot как plt" == "import matplotlib.pyplot как plt"?
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Странное поведение Plt.pcolormesh: только одна линия видно
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Странное поведение Plt.pcolormesh: только одна линия видно
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Странное поведение Plt.pcolormesh: только одна линия видно
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»