Как добавить данные в формате времени ЧЧ: ММ: СС на гистограмму в python? - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь создать гистограмму с данными в формате времени по оси Y.Я хотел бы создать такую ​​же точную гистограмму в Python, но вместо целых чисел на оси Y я хотел бы иметь возможность добавлять данные формата времени (в формате ЧЧ: ММ: СС), например 1:32:12, 2: 35: 10 и т.д ... Возможно ли это?

import numpy as np
import matplotlib.pyplot as plt

# data to plot
n_groups = 4
means_frank = (90, 55, 40, 65)
means_guido = (85, 62, 54, 20)

# create plot
fig, ax = plt.subplots()
index = np.arange(n_groups)
bar_width = 0.35
opacity = 0.8

rects1 = plt.bar(index, means_frank, bar_width,
alpha=opacity,
color='b',
label='Frank')

rects2 = plt.bar(index + bar_width, means_guido, bar_width,
alpha=opacity,
color='g',
label='Guido')

plt.xlabel('Person')
plt.ylabel('Scores')
plt.title('Scores by person')
plt.xticks(index + bar_width, ('A', 'B', 'C', 'D'))
plt.legend()

plt.tight_layout()
plt.show()

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

После нахождения каждой отметки времени с помощью datetime.strptime вы можете заменить значения тиков соответствующими строковыми значениями (в вашем случае отметкой времени), используя plt.yticks(y_values, new_ticks), как вы делали для xticks.

import numpy as np
import matplotlib.pyplot as plt

# data to plot
n_groups = 4
means_frank = (90, 55, 40, 65)
means_guido = (85, 62, 54, 20)

# generate timestamps in a loop here!
new_ticks = ('10:01:19', '10:01:25', '10:03:25', '10:04:30')

# create plot
fig, ax = plt.subplots()
index = np.arange(n_groups)
bar_width = 0.35
opacity = 0.8

rects1 = plt.bar(index, means_frank, bar_width,
alpha=opacity,
color='b',
label='Frank')

rects2 = plt.bar(index + bar_width, means_guido, bar_width,
alpha=opacity,
color='g',
label='Guido')

plt.xlabel('Person')
plt.ylabel('Scores')
plt.title('Scores by person')
plt.xticks(index + bar_width, ('A', 'B', 'C', 'D'))
# here!
plt.yticks(means_guido, new_ticks)


plt.legend()

plt.tight_layout()
plt.show()

Генерируемая мощность

0 голосов
/ 03 мая 2019

Сначала вам нужно будет преобразовать данные времени в datetime.strptime, чтобы манипулировать ими в форме ЧЧ: ММ: СС.

Затем вам нужно преобразовать его в формат matplotlib, благодаря date2num, чтобы построить его.

import datetime
import matplotlib.dates

#an exemple of datetime, replace it by your own data
y = [datetime.datetime.now()] 

time = matplotlib.dates.date2num(y)
plt.plot_date(your_x_axis, time)
...