Ros*_*e C 3 python plot candlestick-chart multiple-axes mplfinance
我正在做的项目需要代码使用 mplfinance 库以多个数字绘制 300 多个烛台图。我知道这只能使用外轴方法来完成,因为它提供了更多的灵活性并且理论上可以绘制无限的图表。
我当前使用的代码如下,绘制的图表如下:
import mplfinance as mpf
s = mpf.make_mpf_style(base_mpf_style='yahoo', rc={'font.size': 6})
fig = mpf.figure(figsize=(34, 13.2), style=s, tight_layout=True)
ax_p = fig.add_subplot(n_rows, n_cols, pos_price)
ax_v = fig.add_subplot(n_rows, n_cols, pos_vol, sharex=ax_p)
fig, ax_list = mpf.plot(resampled_df, type='candle', ax=ax_p, volume=ax_v, show_nontrading=False,
datetime_format='%a %d-%m-%y', xrotation=0, returnfig=True)
Run Code Online (Sandbox Code Playgroud)
我的代码绘制的数百个图表中的 6 个示例图表的屏幕截图:
正如您所看到的,成交量图绘制在烛台图下方的单独图表中。我很难找到将交易量移动到蜡烛图的解决方案,mplfinance 文档第 114 期中有一篇类似的文章解释了如何做到这一点……但我发现对于新人来说很难理解像我一样的图书馆。
如果您能发布详细的代码来执行此操作,将不胜感激!
2021 年 2 月 12 日更新:
我根据@Daniel的建议修改了代码,使用add_axes()而不是add_subplot()现在绘制多个图表时成交量位于烛台图的底部。美丽的!答案已接受。
ax_intra_day_candle = fig.add_axes([x_pos, y_pos, ax_width, ax_height])
ax_intra_day_candle.set_title(title)
ax_intra_day_volume = fig.add_axes([x_pos, y_pos - ax_vol_height, ax_width, ax_vol_height], sharex=ax_intra_day_candle)
mpf.plot(intra_day_df, type='candle', ax=ax_intra_day_candle, volume=ax_intra_day_volume, show_nontrading=False,
datetime_format='%a %m-%d', xrotation=0)
Run Code Online (Sandbox Code Playgroud)
我假设您要求的是让交易量和烛台共享相同的 x 轴,类似于此处的此图像。
最简单的方法是使用fig.add_axes()(而不是fig.add_subplot())
通过这种方式,您可以准确控制每个轴在图中的放置位置。您可以在此处的 mplfinance 代码中看到此操作。
基本思想是,根据总图的分数指定每个 Axes 对象的位置,指示Axes 的左下角及其宽度和高度。
当您希望两个 Axes 对象接触且它们之间没有空间时,您可以相应地指定位置和宽度/高度,以便下部 Axes 的顶部和上部 Axes 的底部完全重合。
因此,例如,要将两个大小相等的轴完全堆叠在一起,假设在图形的左上象限中,您将拥有:
# ax = fig.add_axes([left,bottom,width,height])
ax1 = fig.add_axes([0.05,0.75,0.5,0.25])
ax2 = fig.add_axes([0.05,0.50,0.5,0.25])
Run Code Online (Sandbox Code Playgroud)
华泰
这是一个更具体的示例和结果。 请注意蜡烛图和成交量图如何一起仅占据该图的左上象限:
# ax = fig.add_axes([left,bottom,width,height])
ax1 = fig.add_axes([0.05,0.75,0.5,0.25])
ax2 = fig.add_axes([0.05,0.50,0.5,0.25])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2566 次 |
| 最近记录: |