Этот вопрос закрыт для ответов, так как повторяет вопрос Как отобразить дату по оси в matplotlib?
@cad2206

Как вывести время выполнения по оси Y в графике matplotlib?

Добрый день.
Имеем два массива:
['2022-01-07 Пт', '2022-01-08 Сб', '2022-01-09 Вс', '2022-01-10 Пн', '2022-01-11 Вт', '2022-01-12 Ср', '2022-01-13 Чт', '2022-01-14 Пт', '2022-01-15 Сб', '2022-01-16 Вс', '2022-01-17 Пн']
и
['04:08:42', '02:14:29', '02:11:29', '02:35:51', '02:50:42', '02:34:17', '02:29:04', '03:05:52', '02:43:35', '02:10:27', '04:17:31']
Только это массив не времени хронологического, а времени выполнения (т.е. задача выполнялась 4 часа 8 минут 42 сек (04:08:42))

Как по оси Х вывести первый (дата) массив, а по оси Y вывести второй?
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
@dmshar
Способов есть много. Ну например:
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter
dt=['2022-01-07 Пт', '2022-01-08 Сб', '2022-01-09 Вс', '2022-01-10 Пн', '2022-01-11 Вт', '2022-01-12 Ср', '2022-01-13 Чт', '2022-01-14 Пт', '2022-01-15 Сб', '2022-01-16 Вс', '2022-01-17 Пн']
['04:08:42', '02:14:29', '02:11:29', '02:35:51', '02:50:42', '02:34:17', '02:29:04', '03:05:52', '02:43:35', '02:10:27', '04:17:31']
dur=['04:08:42', '02:14:29', '02:11:29', '02:35:51', '02:50:42', '02:34:17', '02:29:04', '03:05:52', '02:43:35', '02:10:27', '04:17:31']
df = pd.DataFrame({'Date':dt, 
                   'Dur': dur})
df['Dur'] = pd.to_timedelta(df['Dur'])
df['Dur'] = pd.to_datetime(df['Dur'].values.astype('datetime64[D]'))

fig, ax = plt.subplots()
myFmt = DateFormatter("%H:%M:%S")
ax.yaxis.set_major_formatter(myFmt)

ax.plot(df['Date'], df['Dur'])


Результат:
61e56a22d742e091710866.png

Или даже без использования Pandas:
import datetime 
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter
dt=['2022-01-07 Пт', '2022-01-08 Сб', '2022-01-09 Вс', '2022-01-10 Пн', '2022-01-11 Вт', '2022-01-12 Ср', '2022-01-13 Чт', '2022-01-14 Пт', '2022-01-15 Сб', '2022-01-16 Вс', '2022-01-17 Пн']
['04:08:42', '02:14:29', '02:11:29', '02:35:51', '02:50:42', '02:34:17', '02:29:04', '03:05:52', '02:43:35', '02:10:27', '04:17:31']
dur=['04:08:42', '02:14:29', '02:11:29', '02:35:51', '02:50:42', '02:34:17', '02:29:04', '03:05:52', '02:43:35', '02:10:27', '04:17:31']
dlt=[]
for dr in dur:
    dlt.append(datetime.datetime.strptime(dr,"%H:%M:%S"))
fig, ax = plt.subplots()
myFmt = DateFormatter("%H:%M:%S")
ax.yaxis.set_major_formatter(myFmt)
ax.plot(dt, dlt)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы