Я хочу построить matplotlib
гистограмму с данными:
value
Hour
0 100
1 200
2 100
3 200
4 100
5 200
6 200
7 200
8 100
9 200
10 100
11 100
12 200
13 100
14 100
15 200
16 100
17 200
18 100
19 100
20 100
21 200
22 100
23 200
, который вернул график с целыми числами 1 to 23
как xticks
. Ожидаемый результат - изменение формата xticks
на формат времени, т.е. hour:minute
, например 01:00
, 02:00
, и т. Д. c ... Hour
был в типе int64
.
Код для графика:
fig, ax = plt.subplots(figsize=(30,10))
plt.xticks(np.arange(0, 24), fontsize=30)
plt.bar(x.index, x.value, color = 'c')
# x.index = pd.to_datetime(x.index, format='%H').strftime('%H')
# ax.xaxis.set_minor_formatter(mdates.DateFormatter('%H:%M'))
# x.index = [datetime.time(i, 0) for i in x.index]
ax.get_yaxis().set_major_formatter(
ticker.FuncFormatter(lambda x, p: format(int(x), ',')))
plt.xlabel('Hour', fontsize=35)
plt.ylabel('Value', fontsize=35)
Я попытался преобразовать столбец индекса Hour
в формат времени (час) с помощью:
x.index = pd.to_datetime(x.index, format='%H').strftime('%H')
, который обнаружил ошибку:
TypeError: the dtypes of parameters x (object) and width (float64) are incompatible
Также пробовали ax.xaxis.set_minor_formatter(mdates.DateFormatter('%H:%M'))
и x.index = [datetime.time(i, 0) for i in x.index]
на основе других похожих вопросов, но ни один из них не работал.
Почему не работает? Это из-за формы индекса или я неправильно изменил столбец Hour
с int64
на time
?