Проблема здесь в том, что мы не можем отформатировать timedeltas.
Есть отличное решение для этого @ Shawn Chin здесь
Я немного отредактировал его ответ, чтобы добавить начальные нули к часам и минутам, где это применимо, исключительно потому, что я думаю, что это выглядит лучше.Хотя это также ограничит количество дней до двух цифр, но из вашего вопроса я предполагаю, что вы хотите отображать только часы и минуты.
Слегка отредактированная функция Шона:
def strfdelta(tdelta, fmt):
d = {"days": tdelta.days}
d["hours"], rem = divmod(tdelta.seconds, 3600)
d["minutes"], d["seconds"] = divmod(rem, 60)
for key in d:
d[key] = "{:02d}".format(d[key])
return fmt.format(**d)
Добавление одного дополнительногострока в вашем коде для вызова этой функции. Надеюсь, вы получите результат, который вам нужен:
import pandas as pd
import matplotlib.pyplot as plt
times = ['Wed Feb 20 08:28:04 PST 2019', 'Wed Feb 20 09:29:04 PST 2019', 'Wed Feb 20 10:30:04 PST 2019']
timestamps = [pd.Timestamp(t) for t in times]
timedeltas = [t - timestamps[0] for t in timestamps]
timedeltas = [strfdelta(t, '{hours}:{minutes}') for t in timedeltas]
ts = pd.Series([1, 2, 5], index=timedeltas)
ts.plot()
Надеюсь, это поможет!