据我所知,mplfinance 库仅支持 2 个图,称为面板 0 和 1。我想要 3 个面板,所以事实上,我使用外轴来自己创建轴,如下所示:
f = mpf.figure()
(ax1, ax2, ax3) = f.subplots(3, 1, gridspec_kw={'height_ratios': [1, 3, 1]}, sharex=True)
f.subplots_adjust(hspace=0, wspace=0)
# mpf.plot requires to create an index column for dates
ohlcv = ohlcv.set_index(column_names[0])
mpf.plot(ohlcv, type='candle', ax=ax2, volume=ax3)
无法将 ax1 作为参数添加到mpf.plot
函数中(或者是吗?),所以我尝试了这个:
ax1.plot(ohlcv.index.values, self._ohlcv['cash'])
我认为它会起作用,因为它使用与mpf.plot
.
结果:
所以我不知道我应该如何绘制ax1
与ax2
and对齐ax3
。
它看起来不错,但我猜它使用了不同的日期格式,并且与 ax2 和 ax3 不完全一致。那么我怎样才能使这项工作呢?
示例代码:
import pandas as pd
import mplfinance as mpf
ohlcv = pd.DataFrame(
{'Date': [1609459200, 1609545600, 1609632000, 1609718400, 1609804800, 1609891200, 1609977600, 1610064000],
'Open': [11.25, 12.61, 11.93, 10.52, 10.41, 11.66, 11.47, 12.14],
'High': [12.63, 13.2, 11.94, 12.12, 15.02, 11.71, 12.47, 13.01],
'Low': [11.10, 11.68, 9.93, 10.3, 10.31, 11.26, 10.46, 12.13],
'Close': [12.61, 11.93, 10.52, 10.41, 11.66, 11.47, 12.14, 12.96],
'Volume': [108, 102, 105, 116, 164, 145, 132, 117],
'cash': [100.0, 100.295, 100.295, 100.295, 95.685, 95.635, 95.635, 95.635]
})
ohlcv.iloc[:, 0] = pd.to_datetime(ohlcv.iloc[:, 0], unit='s')
ohlcv = ohlcv.set_index('Date')
f = mpf.figure()
(ax1, ax2, ax3) = f.subplots(3, 1, gridspec_kw={'height_ratios': [1, 3, 1]}) # add sharex=True as a param
f.subplots_adjust(hspace=0, wspace=0)
mpf.plot(ohlcv, type='candle', ax=ax2, volume=ax3)
ax1.plot(ohlcv.index.values, ohlcv['cash'])
ax1.legend(['Cash'], loc='best')
mpf.show()
编辑:
现在我仔细观察,成交量条也过大,并且在蜡烛下方视觉上没有正确对齐。轴之间的网格线也很混乱。