Я создал свечной график, используя следующее:
fig, axlist = mpf.plot(df, type='candle', returnfig=True)
Теперь я пытаюсь добавить прямоугольник, который идет от определенной точки оси x к другой точке оси x в позиции y . Теперь данные на оси x - это даты, а данные на оси y - цены.
Я пробовал следующее:
ax1 = axlist[0]
new_patch = Rectangle(xy=(0, 9300), width=0.8, height=0.3, angle=0, color='orange')
ax1.add_patch(new_patch)
ax1.autoscale_view()
Какой работает , проблема в том, что я не хочу использовать число для выбора позиции X. В Rectangle(xy=(0, 9300)
, кроме использования 0, я хочу использовать дату, например Rectangle(xy=('2020-06-17 10:30', 9300)
, но это вызовет у меня ошибку: x должен быть int
.
Вот образец фрейма данных, который я использую для построения диаграммы:
Date Open High Low Close Volume
Date
2020-06-17 19:10:00 2020-06-17 19:10:00 9402.02 9411.03 9400.00 9403.59 215.630925
2020-06-17 19:15:00 2020-06-17 19:15:00 9403.59 9412.54 9403.01 9410.57 108.958008
2020-06-17 19:20:00 2020-06-17 19:20:00 9410.16 9413.66 9409.06 9411.88 107.795579
Подводя итог: мне нужно нанести патч на график, я могу разместить этот патч на x ось, используя число, но вместо этого я хочу использовать дату. Есть ли способ сделать это?
Изменить: я попробовал предложенное решение здесь , но оно не сработало:
date = datetime.datetime(2020, 6, 19, 10, 30)
testDate = mdates.date2num(date)
print(testDate)
new_patch = Rectangle(xy=(testDate, 9370), width=1, height=0.3, angle=0, color='orange')
ax1.add_patch(new_patch)
ax1.autoscale_view()
Поскольку оно дало мне абсурдный результат: