У меня есть pandas.DataFrame
с несколькими строками (1 на сделку, которую я хочу проверить)
trades = pandas.read_csv(...)
Я хочу построить каждую сделку на подспоте matplotlib.Я создаю pyplot.figure
, используя len(trades)
, чтобы создать достаточную высоту
fig = pyplot.figure(figsize=(40,15 * len(trades)))
Затем я перебираю каждую сделку и генерирую график
for i,r in enumerate(trades.iterrows()):
_, trade = r
start = trade.open_time - datetime.timedelta(seconds=30)
end = trade.close_time + datetime.timedelta(seconds=30)
b = bids[start:end]
a = asks[start:end]
ax = fig.add_subplot(len(trades),1,i+1)
# plot bid/ask
ax.plot_date(b.index, b, fmt='-', label='bid')
ax.plot_date(a.index, a, fmt='-', label='ask')
# plot entry/exit markers
ax.plot(trade.open_time, trade.open_price, marker='o', color='b')
ax.plot(trade.close_time, trade.close_price, marker='o', color='r')
ax.set_title("Trade {}".format(i+1, fontsize=10)
ax.set_xlabel("Date")
ax.set_ylabel("Price")
ax.legend(loc='best', fontsize='large')
pyplot.show()
# free resources
pyplot.close(fig.number)
Это прекрасно работает.
Теперь, однако, я хочу отобразить визуализированный HTML-код кадра данных для рассматриваемой сделки.
Поскольку я делаю это в блокноте Jupyter, из этого SO ответа Я былсмог найти следующий фрагмент, который будет отображать мой фрейм данных в формате html:
t = pandas.DataFrame(trades.iloc[i]).T
IPython.display.display(IPython.display.HTML(t.to_html())
Я вставляю этот фрагмент в свой цикл.
Проблема заключается в том, что каждый HTML-кадр каждой сделки выводится по одномупосле другого, а затем после того, как все кадры данных напечатаны, графики печатаются.
+-----------+
| dataframe |
+-----------+
+-----------+
| dataframe |
+-----------+
+-----------+
| dataframe |
+-----------+
+------+
| |
| plot |
| |
+------+
+------+
| |
| plot |
| |
+------+
+------+
| |
| plot |
| |
+------+
Учитывая, что я создал один большой pyplot.figure
, и я вызываю pyplot.show()
после цикла это имеет смысл - внутри цикла я вывожу HTML-кадр данных, а после цикла я отображаю график.
Вопрос:
Как я могу чередовать блокнот HTML и каждый субплот?
+-----------+
| dataframe |
+-----------+
+------+
| |
| plot |
| |
+------+
+-----------+
| dataframe |
+-----------+
+------+
| |
| plot |
| |
+------+
+-----------+
| dataframe |
+-----------+
+------+
| |
| plot |
| |
+------+