Добавить линию оси Y на графике панд - PullRequest
0 голосов
/ 09 июля 2019

У меня есть результаты спортивных соревнований (бег) как время прохождения круга.Время указывается в формате H: M: S (00:49:51).Я нанес на график наиболее распространенное время окончания, например:

df['new_time'] = pd.to_timedelta(df['time'], errors='coerce')
time_frame = str(60 * 5) + 's'
lap_time = df.groupby(pd.Grouper(key='new_time', freq=time_frame)).count()
lap_time['count'].plot()

, и оно отлично работает. enter image description here

Но я хочу нарисовать красную линию или отметку,где будет время моего результата (01:07:45). Другим вариантом будет также изменить график на столбцы и просто закрасить один столбец красным, где мое время будет сгруппировано.

РЕДАКТИРОВАТЬ: Это двойной вопрос .Проблема заключалась в том, что Pandas представляет Timedeltas в наносекундном разрешении с использованием 64-битных целых чисел, и поэтому он не отображался.

1 Ответ

0 голосов
/ 09 июля 2019

Pandas использует matplotlib, поэтому вы можете использовать их функции здесь.Добавьте следующие строки в ваш код:

df['new_time'] = pd.to_timedelta(df['time'], errors='coerce')
time_frame = str(60 * 5) + 's'
lap_time = df.groupby(pd.Grouper(key='new_time', freq=time_frame)).count()
ax = lap_time['count'].plot()

ymin, ymax = ax.get_ylim()
date # make date be equal to whatever you are storing in your DataFrame
# If it is of type; datetime.time, then the following should work
# date = pd.to_datetime('01:07:45').time()
ax.vlines(x=date, ymin=ymin, ymax=ymax-1, color='r')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...