У меня есть python код для построения внутридневных данных на графике с использованием Matplotlib,
def plot(df):
mpl.style.use('default')
df['date'] = [x[:17]+'00' for x in df['date'].tolist()]
data = [tuple(x) for x in df.to_records(index=False)]
ohlc_data = []
for line in data:
print(line)
ohlc_data.append((dates.datestr2num(line[0]), np.float64(line[1]), np.float64(line[2]), np.float64(line[3]), np.float64(line[4])))
fig, ax1 = plt.subplots()
fig.set_size_inches(17, 10)
candlestick_ohlc(ax1, ohlc_data, width = 0.5/(24*60), colorup = 'g', colordown = 'r', alpha = 0.8)
ax1.xaxis.set_major_formatter(dates.DateFormatter('%d:%H:%M:%S'))
ax1.xaxis.set_major_locator(ticker.MaxNLocator(10))
plt.xticks(rotation = 30)
plt.grid()
plt.xlabel('Date')
plt.ylabel('Price')
plt.tight_layout()
plt.show()
При печати данных за один день, например,
date Open High Low Close
0 2020-02-11 09:15:00 370.50 371.70 369.05 371.70
1 2020-02-11 09:20:00 371.50 372.20 371.30 371.85
2 2020-02-11 09:25:00 371.70 373.45 371.70 373.20
3 2020-02-11 09:30:00 373.45 374.35 373.20 373.55
4 2020-02-11 09:35:00 373.70 373.75 373.00 373.70
5 2020-02-11 09:40:00 373.65 373.70 373.00 373.40
6 2020-02-11 09:45:00 373.30 373.60 373.00 373.40
7 2020-02-11 09:50:00 373.25 374.00 373.20 374.00
8 2020-02-11 09:55:00 373.80 375.50 373.80 375.45
9 2020-02-11 10:00:00 375.45 376.15 374.55 374.80
10 2020-02-11 10:05:00 374.80 375.40 374.65 375.20
11 2020-02-11 10:10:00 375.05 375.20 374.15 374.75
12 2020-02-11 10:15:00 374.65 374.90 373.80 373.95
13 2020-02-11 10:20:00 373.85 374.25 373.55 374.00
14 2020-02-11 10:25:00 373.95 374.30 373.30 373.55
, они отображаются правильно, но при использовании данные за несколько дней, например,
date Open High Low Close
0 2020-02-10 15:05:00 367.80 368.20 367.45 368.00
1 2020-02-10 15:10:00 368.00 368.25 367.25 368.25
2 2020-02-10 15:15:00 368.05 369.85 368.05 369.40
3 2020-02-10 15:20:00 369.40 369.45 368.60 368.75
4 2020-02-10 15:25:00 368.75 369.05 368.50 369.00
5 2020-02-11 09:15:00 370.50 371.70 369.05 371.70
6 2020-02-11 09:20:00 371.50 372.20 371.30 371.85
7 2020-02-11 09:25:00 371.70 373.45 371.70 373.20
8 2020-02-11 09:30:00 373.45 374.35 373.20 373.55
9 2020-02-11 09:35:00 373.70 373.75 373.00 373.70
10 2020-02-11 09:40:00 373.65 373.70 373.00 373.40
11 2020-02-11 09:45:00 373.30 373.60 373.00 373.40
12 2020-02-11 09:50:00 373.25 374.00 373.20 374.00
13 2020-02-11 09:55:00 373.80 375.50 373.80 375.45
14 2020-02-11 10:00:00 375.45 376.15 374.55 374.80
15 2020-02-11 10:05:00 374.80 375.40 374.65 375.20
16 2020-02-11 10:10:00 375.05 375.20 374.15 374.75
17 2020-02-11 10:15:00 374.65 374.90 373.80 373.95
18 2020-02-11 10:20:00 373.85 374.25 373.55 374.00
19 2020-02-11 10:25:00 373.95 374.30 373.30 373.55
не будут отображаться должным образом, я думаю, что ошибка в функции dates.datestr2num
, но не может найти решение. У кого-нибудь есть решение для этого?